我目前正在按照“你不懂的js”系列丛书来学习javascript。
在作者讨论“IIFE”的书“范围和封闭”一节中,作者提到了
此模式的另一个应用程序解决(次要利基) 担心默认的未定义标识符可能有其值 被错误覆盖,导致意外结果。通过命名一个 参数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!" ); } })();
但我认为undefined
是一个不可写的变量。当我在chrome浏览器中尝试undefined = true;
时,undefined
的值确实没有改变(即,在非严格模式下,分配失败)。那么为什么作者试图分配给undefined
?
其次,我不确定IIFE
函数的目的是什么undefined
作为参数?喜欢什么是潜在的用途?