1

我知道不应该这样做,把它当作一个学术问题。
如果我要连接几个 JavaScript 文件,有的'use strict';在顶部,有的没有,结果会是什么?

我知道如果你把这个短语放在文件的顶部,它会为整个文件启用严格模式,如果它位于函数的开头,它的作用域就是该函数。
但是,如果第一个'use strict';在中途怎么办?我想您也可以将此探索外推到函数范围的用途。

会吗?

  • 没有效果,
  • 为整个文件启用严格模式,或
  • 以某种方式仅对代码的剩余长度启用严格模式?

例如

/*from file1.js*/
function bob() {
    willThisError = 'because of use strict mode below?';
}

/*from file2.js*/
"use strict";
function bob2() {
    var thisAuthor = 'likes to enable strict mode';
}

或者

//midway through function
function test() {
    willThisError = '?';
    'use strict';
    var orWillIt = 'have no effect';
}

我想我可以自己测试它,但我对规范参考或其他东西感兴趣,而不是陷入浏览器对严格模式声明的个人解释。

4

2 回答 2

1

根据MDN 文档

严格模式适用于整个脚本或单个函数。它不适用于包含在 {} 大括号中的块语句;试图将它应用到这样的上下文中没有任何作用。eval 代码、Function 代码、事件处理程序属性、传递给 setTimeout 的字符串等都是完整的脚本,在其中调用严格模式可以按预期工作。

所以我认为这意味着在文件的顶部或函数的顶部,或者它什么都不做。

于 2013-07-19T02:15:54.407 回答
1

将脚本与非严格模式脚本连接起来的效果strict mode取决于您执行此操作的顺序。如果你从一个strict脚本开始,整个脚本看起来会是strict. 如果你从一个非严格的开始,它会看起来不严格。

你可以在这里找到一个很好的参考

于 2013-07-19T02:16:36.273 回答