使用带有“undefined”作为参数的IIFE,将值赋值给“undefined”时会产生混淆

时间:2017-07-06 21:46:28

标签: javascript function undefined iife

我目前正在按照“你不懂的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作为参数?喜欢什么是潜在的用途?

0 个答案:

没有答案