我目前正在学习Javascript并遇到了"严格模式"一词.我知道它用于向编译器表明应该更严格地检查代码.然后我继续测试这个:首先我尝试了这个:
function test() {
"use strict";
a = 4;
alert(a);
}Run Code Online (Sandbox Code Playgroud)
我没有收到警报,并认为由于错误被抛出而非常合乎逻辑,因为未定义"a".然后我尝试了这个:
{
"use strict";
a = 4;
alert(a);
}Run Code Online (Sandbox Code Playgroud)
刷新页面后,显示警告"4".所以我的问题是什么时候严格的模式"工作",什么时候不是?
我一直在阅读"你不知道Js"系列并且遇到了这个:
"此模式的另一个应用程序解决了(次要的利基)问题,即默认的未定义标识符可能会错误地覆盖其值,从而导致意外结果.通过命名参数undefined,但不传递该参数的任何值,我们可以保证未定义标识符实际上是代码块中的未定义值:"
undefined = true; // setting a land-mine for other code! avoid!
(function IIFE( undefined ) {
var a;
if (a === undefined) {
console.log( "Undefined is safe here!" );
}
})();
Run Code Online (Sandbox Code Playgroud)
我不明白这里发生了什么.是未定义的数据类型还是仅仅是标识符以及此代码的工作原理?
谢谢.
javascript ×2