Да, вы должны всегда использовать var
.
Не используя var
имеет два основных недостатка:
- Доступ к переменной внутри функции, которая не определена в этой функции будет вызывать интерпретатор не для поиска областей видимости для переменной с этим именем, пока либо он найти один или он попадает в глобальный объект (доступный в браузерах через
window
), где он создаст свойство. Это глобальное свойство теперь доступно повсюду, что потенциально вызывает путаницу и трудно обнаруживает ошибки;
- Доступ к необъявленной переменной приведет к ошибке в строгом режиме ECMAScript 5.
Кроме того, не используя var
для глобальной переменной не является точно такой же, как с помощью var
: при использовании var
, свойство создает на глобальный объект имеет внутренний DontDelete
атрибут, который не так без var
:
// Next line works in any ECMAScript environment. In browsers, you can
// just use the window object.
var globalObj = (function() { return this; })();
var x = 1;
delete globalObj.x;
alert(x); // Alerts 1, x could not be deleted
y = 2;
delete globalObj.y;
alert(y); // Error, y is undefined
Зачем стоит тэг PHP? – BoltClock
Я сделал поиск SO, основанный на названии вашего вопроса. Это первый результат, который я получил: http://stackoverflow.com/questions/2485423/javascript-is-using-var-to-declare-variables-optional – user113716