В то время как это было указано как «быть глупым заявление», я представляю следующие два счетчика:
(Просто, чтобы держать людей в напряжении и укрепляющие некоторые "мелкие детали" из JavaScript.)
1)
var
переменная уже local
. Например.
function x (y) {
var y = y || 42 // redeclaration warning in FF, however it's "valid"
return y
}
x(true) // true
x() // 42
2)
var
является функцией шириной аннотации (она «поднимается» к вершине), а не декларация на месте использования.
function x() {
y = true
var y = y || 42
}
x() // true
Мне не нравится код, как любой из предыдущих, но ...
Из-за подъем, и позволил повторно декларации, код в посте имеет семантику:
var var1
if (!var1) {
var1 = []
}
Редактировать Мне неизвестно, как «строгий режим» в Ed.5 влияет на вышеизложенное.
Это интересный способ достижения цели. Но почему это было бы случайным образом превратить нуль в первую очередь? – TheLQ 2010-11-26 00:42:30
@TheLQ: Это может быть необязательный параметр. – SLaks 2010-11-26 00:43:08
@SLaks: но тогда ему не понадобится `var`, правильно? – cambraca 2010-11-26 00:44:36