2013-08-26 2 views
-2

Только что начал изучать JS. Я понимаю определяющие переменные. Зачем оставлять один необъявленный? Помогает ли это при построении операторов if?Зачем оставлять переменную необъявленную в javascript?

+1

Это может быть дубликат: http://stackoverflow.com/questions/15985875/effect-of-declared-and-undeclared-variables – dbarnes

ответ

1

yep он может «помочь при построении if/then statement?» значение undefined равно false. так:

if (myVar) 

означает, что если его есть значение истинно, если не фальшивой

но лучше сделать:

var myVar; 

, который до сих пор является ложным, не объявляя может дать ошибку в старшем браузере

Имейте это в виду, если у вас уже есть глобальный «var i;» а затем попробуйте использовать один в цикле, я думаю, он просто заставит вас потерять глобальный «i» для нового.

+0

'значение undefined is false'; _undefined_ является ложным, но 'undefined! == false' –

+0

@PaulS. true (lol), но он все равно будет работать для "if (undeclaredVariable)" –

3

Зачем оставлять один необъявленный?

function foo() { 
    var i = 0; // local variable 
    j = 1;  // global variable 
} 
foo(); 
i; // undefined 
j; // 1 
function bar() { 
    var k; // local variable 
    k = 2; // still local 
} 
bar(); 
k; // undefined 

Если foo находится в режиме "use strict", это вызовет ReferenceError: j is not defined, если иной j не определен выше области видимости цепи, так как не было никакого var для j.

+0

Насколько я знаю, вы не можете объявить глобальную переменную ** внутри ** a функция и "j = 1;" (если это не ошибка) будет локальной переменной –

+0

@tryingToGetProgrammingStraight Если вы этому не верите, попробуйте код, который я разместил здесь, а затем проверим, есть ли глобальный 'j' и отчитывается: -) Я считаю, что 'j;' вне функции _function_, как в моем примере, является достаточным доказательством. –

+0

Верно, что 'j' не обязательно станет глобальным, если в области есть« var j », но не глобально. –

Смежные вопросы