我最近在一个竞争激烈的网站上遇到了这个javascript代码,无法理解它的工作原理。
var a= 1;
(function(){
console.log(a);
var a = 2;
console.log(a);
})();
我希望输出是。
1 2
但是令我惊讶的是,原始输出是。
未定义 2
有人可以解释一下它是如何工作的吗?预先感谢。
答案 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