Сообщение от 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 не кофе, он спроектирован так, чтобы синтаксис был четким, подробным и очевидным - это во-первых, во-вторых - код при возможности должен быть отвязан от скопа, для лучшей фрагментированости и переносимости.