需要帮助理解下面的 IIFE 代码是如何工作的
Need help understanding how the below IIFE code works
我最近在一个竞争网站上看到了这段 javascript 代码,但无法理解它的工作原理。
var a= 1;
(function(){
console.log(a);
var a = 2;
console.log(a);
})();
我预计输出是..
1 2
但令我惊讶的是,原始输出是..
undefined
2
有人可以解释一下它是如何工作的吗?提前致谢。
变量 a
的声明被带到范围的顶部。这个过程称为提升。
var a= 1;
(function(){
var a;
console.log(a);
a = 2;
console.log(a);
})();
考虑一个没有 IIFE 和全局变量的通用代码段。
function func(){
console.log(x)
var x = 2;
console.log(x)
}
func()
x
的声明被提升到function.So范围的顶部以上代码与
相同
function func(){
var x; //x is declared and its value is undefined
console.log(x)
x = 2;
console.log(x)
}
func()
我最近在一个竞争网站上看到了这段 javascript 代码,但无法理解它的工作原理。
var a= 1;
(function(){
console.log(a);
var a = 2;
console.log(a);
})();
我预计输出是..
1 2
但令我惊讶的是,原始输出是..
undefined 2
有人可以解释一下它是如何工作的吗?提前致谢。
变量 a
的声明被带到范围的顶部。这个过程称为提升。
var a= 1;
(function(){
var a;
console.log(a);
a = 2;
console.log(a);
})();
考虑一个没有 IIFE 和全局变量的通用代码段。
function func(){
console.log(x)
var x = 2;
console.log(x)
}
func()
x
的声明被提升到function.So范围的顶部以上代码与
function func(){
var x; //x is declared and its value is undefined
console.log(x)
x = 2;
console.log(x)
}
func()