Просто из интеллектуального любопытства, почему javascript принимает
var z = z || [];
для инициализации z (как z может быть определен изначально)
, но без var выдает ошибку (в глобальном пространстве)
z = z || [];
(если z ранее не определено)
В глобальном пространстве вам не нужно использовать VAR, хотя я понимаю, что это может быть плохой практикой.
РаньшеВы говорите, что это дубликат вопросов, таких как
Какова цель ключевого слова var и когда его использовать (или опустить)?
Обратите внимание на объявление, что «Если вы находитесь в глобальной области, то нет никакой разницы».
Очевидно, что это не на 100% верно, учитывая мой рабочий пример.
Это странная логика или законная логика?
добавление краткого ответа на вопрос, который я узнал:
Благодаря Тиму (см. Ниже) ключ к моемунедоразумение не понимало этого (основополагающее для javascript)
var z;абсолютно ничего не делает, если z уже существует
Вот так выглядит это выражение в обоих случаях, если вы ошибочно полагаете, что "var z" всегда инициализируется.
Начиная слева,«var z» просто гарантирует, что z определен, но фактически не влияет на любое существующее значение, если оно уже существует.Затем справа, если z уже существует, он используется, если нет, переменная была только что объявлена (но пуста), поэтому она не будет использоваться, но не выдаст ошибку.
Это отличностатья по этому виду задач и подъему в Javascript: http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Hoisting
Большое спасибо Minitech и всем, кто тоже внес свой вклад!