“严格使用”的效果;在文件范围内,但不在顶部

时间:2013-07-19 02:10:45

标签: javascript

我明白不应该这样做,把它作为一个学术问题 如果我要连接几个JavaScript文件,其中一些在顶部有'use strict';,有些没有,那会是什么结果呢?

我知道如果你把短语放在文件的顶部,它会为整个文件启用严格模式,如果它在函数的开头,则它的范围是该函数。
但如果第一个'use strict';中途下降怎么办?我想你也可以推断这个任务到功能范围的用途。

会吗;

  • 无效,
  • 为整个文件启用严格模式,或
  • 以某种方式只为剩余的代码长度启用严格模式?

E.g。

/*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';
}

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

2 个答案:

答案 0 :(得分:1)

根据MDN documentation

  

严格模式适用于整个脚本或单个功能。它   不适用于{}括号中的块语句;试图   将它应用于这样的环境什么都不做。评估代码,功能代码,   事件处理程序属性,传递给setTimeout的字符串等   是完整的脚本,并在其中调用严格模式   预期

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

答案 1 :(得分:1)

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

您可以找到一个好的参考here