Является ли это определение переменной или декларация? И почему?
var x;
... а память зарезервирована для x после этого оператора?
РЕДАКТИРОВАТЬ: в C extern int x;
является объявлением, int x = 5;
это определение. Какой аналог в JS? Википедия говорит, что объявление выделяет память, а определение присваивает значение этой выделенной памяти.
ВТОРОЕ РЕДАКТИРОВАНИЕ: Я думаю, что объяснение @Deryck звучит великолепно, но есть некоторые выводы, которые не соответствуют его объяснению:
> var x;
undefined
> x
undefined // now it looks like x is defined to the value undefined
> y
ReferenceError: y is not defined
Если вывод ReferenceError
скажет, что y is not declared
это будет иметь смысл. Но часто я читаю, что у JS есть два ненулевых значения: null
и undefined
. Таким образом, var x
будет определением со значением undefined
.