Я думаю, что вы имели в виду, чтобы спросить не следующие
// Why should I use
if (x) {
do();
}
// instead of
x && do();
или
// Why should I use
if (x) {
do();
} else {
dont();
}
//instead of
x ? do() : dont()
Как они написаны, нет никакой разницы в результатах. Мне не нравится использовать тернар или оператор & & в этих случаях из-за семантики использования троичного кода и & &. Терминал возвращает значение, которое вы не используете, равно как и выражение & &. Поэтому я предпочел бы использовать способ использования операторами.
Однако, я люблю использовать & & для нулевых проверок
var val = obj && obj.getValue();
Обратите внимание, что в данном случае мы используем возвращаемое значение выражения
Кроме того, синтаксис блока не оценивает любое значение (это не выражение). Тернарный оператор действительно оценивает значение. – cdhowie 2010-12-02 22:31:54
@meder Я обновил вопрос ... – 2010-12-02 22:32:48