以下是MDN的代码:
function f2(){
"use strict"; // see strict mode
return this;
}
console.log(f2());
脚本中的f2调用工作正常。但它从控制台调用显示窗口对象!怎么了?设置" javascript.options.strict"选项没有帮助。
在Chrome中,一切正常。
答案 0 :(得分:1)
如果您确实执行了确切的MDN代码段,那么这将是一个错误,必须已经修复,因为我无法重现它。
但是,应该注意,如果我们引用this answer并尝试在firefox控制台的分隔语句中执行测试:
>> var isStrict = (function() { return !this; })(); console.log(isStrict);
false
>> "use strict"; var isStrict = (function() { return !this; })(); console.log(isStrict);
true
这证明Firefox的Dev工具确实考虑了"use strict"
。现在,如果我们再尝试一次:
>> "use strict";
"use strict"
>> var isStrict = (function() { return !this; })(); console.log(isStrict);
false
这里更改的是"use strict"
在分离的提示符中使用而不是在同一个提示符中使用,并且似乎Firefox的开发工具会为每个提示重新初始化严格模式。因此,如果不是
正好使用MDN的措辞,你试过像
"use strict"
...关于每个提示重置"use strict"
的事实,输出是正常的。
注意:请注意,另一方面,以下似乎正在起作用:
>> "use strict"; function f3(){return this;}
"use strict"
>> console.log(f3())
undefined