js中的预解析问题

预解析 => 声明的提升
1. 以var 声明的变量 会预解析
2. 以let 声明的变量 不会进行预解析
3. 函数的声明会 预解析
4. 函数表达式 不进行预解析
例子:
foo()
function foo () {
var a = 1
console.log(a)
}
function foo () {
var a = 2
console.log(a)
}
var foo = function () {
var a = 3
console.log(a)
}
foo()

打印结果: 2 , 3
解释:
由于 函数的声明 会被提升, 函数表达式 不会被提升,且 后声明的 覆盖 前面声明的。因此最终打印结果为2,3

猜你喜欢

转载自blog.csdn.net/hhf235678/article/details/79364203
今日推荐