我明白不应该这样做,把它作为一个学术问题
如果我要连接几个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';
}
我想我可以自己测试一下,但我对规范参考或其他东西感兴趣,而不是陷入浏览器对严格模式声明的个别解释。
答案 0 :(得分:1)
严格模式适用于整个脚本或单个功能。它 不适用于{}括号中的块语句;试图 将它应用于这样的环境什么都不做。评估代码,功能代码, 事件处理程序属性,传递给setTimeout的字符串等 是完整的脚本,并在其中调用严格模式 预期
所以我认为这意味着在文件顶部或函数顶部,或者它什么都不做。
答案 1 :(得分:1)
将strict mode
脚本与非严格模式脚本连接起来的效果取决于您执行此操作的顺序。如果您从strict
脚本开始,整个脚本将显示为strict
。如果你从一个非严格的开始,它将看起来不严格。
您可以找到一个好的参考here