Показать сообщение отдельно
  #12 (permalink)  
Старый 14.03.2015, 21:17
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Сообщение от nbq
а если "use strict" убрать?
use strict - это режим соответствия стандарту ES5. Неудачное название, да, очевидней бы было 'use ES5', но уж как есть.

Сообщение от nbq
можно пруф, где написано, что запрещено?
Сообщение от спецификация
When an assignment occurs within strict mode code, its LeftHandSide must not evaluate to an unresolvable reference. If it does a ReferenceError exception is thrown upon assignment.
https://people.mozilla.org/~jorendor...ml#sec-11.13.1, примечание.

Сообщение от nbq
Разница в том, что перменную с var невозможно удалить
delete предназначен для удаления свойств, а не переменных
Сообщение от спефикация
When a delete operator occurs within strict mode code, a SyntaxError exception is thrown if its UnaryExpression is a direct reference to a variable, function argument, or function name.
https://people.mozilla.org/~jorendor...tml#sec-11.4.1, примечание.

Сообщение от nbq
обойти это легко, можно писать window.a=1
Да, так и надо делать. JS не кофе, он спроектирован так, чтобы синтаксис был четким, подробным и очевидным - это во-первых, во-вторых - код при возможности должен быть отвязан от скопа, для лучшей фрагментированости и переносимости.
Ответить с цитированием