Как вы, возможно, знаете, ECMAscript пытается быть умным и будет автоматически вставлять точки с запятой, если вы не пишете их явно. Простой пример
function foo() {
var bar = 5
return bar
}
будет работать, как ожидалось. Но есть некоторые оговорки, если вы полагаетесь на это. Если мы перепишем эту функцию так:
function foo() {
var bar = 5
return
{
bar: bar
}
}
.. эта функция теперь вернет undefined
, потому что интерпретатор будет вставлять эту точку с запятой сразу после оператора return
(это причина, по которой вы всегда должны вставлять фигурные скобки в той же строке, что и оператор).
Однако, зная все это, мне теперь интересно, насколько безопасен оператор return
, такой как следующий, в браузерах и версиях
function foo() {
var a = true,
b = true,
c = false;
return a
&& b
&& c;
}
Я только что написал аналогичную return statement
в производственной среде. Просто потому, что я знал о "проблемах" с ECMAscript, не очень-то умных о вставке с запятой, мне интересно сейчас, если этот код работает на 100%. В моих первых тестах на FF/Chrome/IE (последние версии) это выглядит совершенно нормально, но действительно ли это?
Используется ли автоматическая точка с запятой "пробуждение", если в этой строке есть что-то еще, кроме оператора return
? Может ли кто-нибудь предоставить информацию об уровне реализации на этом уровне?