在Javascript中覆盖未定义和IIFE

在Javascript中覆盖未定义和IIFE,javascript,Javascript,我一直在阅读“You Don Know Js”系列,并遇到以下问题: “这种模式的另一个应用解决了(小生态位)担心默认的undefined标识符的值可能被错误地覆盖,从而导致意外结果。通过命名参数undefined,但不传递该参数的任何值,我们可以保证undefined标识符实际上是代码块中的undefined值: undefined=true;//为其他代码设置地雷!避开! (功能IIFE(未定义){ var a; 如果(a==未定义){ log(“未定义在这里是安全的!”); } })()

我一直在阅读“You Don Know Js”系列,并遇到以下问题:

“这种模式的另一个应用解决了(小生态位)担心默认的
undefined
标识符的值可能被错误地覆盖,从而导致意外结果。通过命名参数
undefined
,但不传递该参数的任何值,我们可以保证
undefined
标识符实际上是代码块中的
undefined
值:

undefined=true;//为其他代码设置地雷!避开!
(功能IIFE(未定义){
var a;
如果(a==未定义){
log(“未定义在这里是安全的!”);
}

})();不带移交值的函数参数的使用是未定义的,尽管命名是不确定的

(function IIFE(undefined) {
})();          ^^^^^^^^^
  ^^ --------------+
undefined=true;//为其他代码设置地雷!避开!
(功能IIFE(未定义){
var a;
如果(a==未定义){
log(“未定义在这里是安全的!”);
}
})();
undefined
(标识符)是一个预定义的全局变量,其值为
undefined
,这是唯一一个未定义类型的成员。()

使用表示
未定义的
(标识符)不是只读的,您可以分配给它。这在很久以前就不再是真的了(2009年,从ES5开始);此日志记录未定义的
,而不是
true

undefined=true;

console.log(未定义)如果参数未命名为“undefined”(这对工作来说不是必需的),可能更容易理解


仍然可以访问函数内部的值
未定义
,即使它被全局覆盖。

函数IIFE内部(未定义){
body
undefined
是名为
undefined
的参数,因为您调用此函数时没有参数,所以该参数的值是
undefined
。很抱歉,我既不理解注释也不理解答案。
undefined=true
(使用预定义的全局变量)从2009年ES5起停止生效。调用此函数时,它有一个名为“undefined”的参数,该参数隐藏了特殊数据类型的默认标识符“undefined”,这样,由于没有值作为参数传递,该参数被设置为undefined,并显式设置为true?Will(在此点之后)已声明且未初始化的变量是否设置为true?是和否。已定义但未初始化的变量具有值(和状态)
undefined
如果变量
undefined
具有不同的值,则此值不会更改。谢谢!请检查我的理解:有一个名为undefined的全局默认变量,它保存未定义的值(如果未覆盖)它本身是对象中唯一未定义的成员。对吗?经过一些思考、头脑清醒和沉思,真相被发现了:未定义是一种数据类型,未定义是其唯一可能的值,未定义是一个全局默认值variable@BranTran-没错。:-)这很奇怪。而
null
null
的关键字>value(Null类型的唯一成员),
undefined
不是关键字,只是预定义的全局值。
undefined = true;
function f ( param ) {
    console.log( 'Param is:', param )
}
f();
-> Param is: undefined