В ECMAScript5, каков объем “строгого использования”?

Какой объем строгая прагма режима имеет в 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, таким образом блокируя выполнение оценки?

41
задан Shog9 18 August 2010 в 00:13
поделиться

1 ответ

РЕДАКТИРОВАТЬ Похоже, я был неправ. См. ответ Джеффа Уолдена ниже .

Ознакомьтесь с этим ответом на связанный вопрос: Что делает «use strict» в JavaScript и какова его причина?

Несмотря на жалобы JSLint, вы можете (и должны ]) используйте "use strict"; внутри функции, если вы хотите, чтобы эта функция работала только в строгом режиме. Если вы используете его в глобальном контексте, тогда весь ваш код будет переведен в строгий режим. Краткий ответ: да, это заблокирует ваше использование eval .

4
ответ дан 27 November 2019 в 00:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: