需要帮助来了解下面的IIFE代码如何工作

时间:2019-05-31 15:48:04

标签: javascript iife

我最近在一个竞争激烈的网站上遇到了这个javascript代码,无法理解它的工作原理。

var a= 1;
(function(){
    console.log(a);
    var a = 2;
    console.log(a);
})();

我希望输出是。

  

1 2

但是令我惊讶的是,原始输出是。

  

未定义   2

有人可以解释一下它是如何工作的吗?预先感谢。

1 个答案:

答案 0 :(得分:3)

将变量if ( price < maxPrice && price > 40 ) {的声明置于范围的顶部。此过程称为吊装。

a

考虑一个没有IIFE和全局变量的通用代码段。

var a= 1;
(function(){
    var a;
    console.log(a);
    a = 2;
    console.log(a);
})();

function func(){ console.log(x) var x = 2; console.log(x) } func()的声明被提升到函数范围的顶部。因此上面的代码与

相同。
x