Какой объем строгая прагма режима имеет в ECMAScript5?
"use strict";
Я хотел бы сделать это (главным образом, потому что JSLint не жалуется на это):
"use strict";
(function () {
// my stuff here...
}());
Но я не уверен, взломало ли это другой код или нет. Я знаю, что могу сделать это, которое определит объем прагмы к функции...
(function () {
"use strict";
// my stuff here...
}());
но JSLint жалуется на это (когда "строгая" опция JSLint включена), потому что это думает, что Вы выполняете код перед включением "строгого использования".
Вот мой вопрос. Если у меня есть fileA.js:
"use strict";
// do some stuff
и fileB.js:
eval( somecodesnippet ); // disallowed by "use strict"
и затем включайте их в мою страницу HTML в том же самом порядке, прагма будет ограничена по объему в файл, или прагма выйдет за край в fileB, таким образом блокируя выполнение оценки?
РЕДАКТИРОВАТЬ Похоже, я был неправ. См. ответ Джеффа Уолдена ниже .
Ознакомьтесь с этим ответом на связанный вопрос: Что делает «use strict» в JavaScript и какова его причина?
Несмотря на жалобы JSLint, вы можете (и должны ]) используйте "use strict";
внутри функции, если вы хотите, чтобы эта функция работала только в строгом режиме. Если вы используете его в глобальном контексте, тогда весь ваш код будет переведен в строгий режим. Краткий ответ: да, это заблокирует ваше использование eval
.