function User(name,age){
this.name = name;
this.age = age;
}
var user = new User('Daniel', 45);
document.write(user[name] + ' is ' + user[age] + ' years old!');
Я знаю разницу между записью через точку и записью в квадратных скобках. Когда приведенный выше код запускается в консоли Chrome, отображается Uncaught ReferenceError: age is not defined
. Поскольку я не объявлял name
, он должен выдавать ошибку name is not defined
, поскольку он встречается первым в коде. Я зарегистрировал window.name
и window.age
только для того, чтобы увидеть "" и undefined соответственно.
Думая, что раньше я мог использовать name
в глобальной области видимости, я протестировал тот же код после очистки истории браузера, а также в новом браузере, Firefox, который я никогда раньше не использовал. В обоих сценариях отображается одна и та же ошибка.
Означает ли это, что name
по умолчанию инициализируется пустой строкой в любом браузере?
После того, как я сделал delete window.name;
, он выдал ошибку на name
. Но почему name
будет уже пустой строкой в совершенно новом браузере. Любые комментарии будут полезны. Спасибо.
window.name
тамundefined
. - person ASDFGerte   schedule 09.06.2018window.name
и является зарезервированным свойством окна . - person Nina Scholz   schedule 09.06.2018window.name
— это имя текущего окна: Имя окна используется в основном для установки целей для гиперссылок и форм. Windows не обязательно иметь имена. из MDN веб-документы. Так что в нашем случае у него нет имени:window.name
возвращает пустоеString
. - person Ivan   schedule 09.06.2018