var x = 10
bar()
function foo() {
console.log(x)
}
function bar() {
var x = 30
foo()
}
结果
分析:调用foo函数向函数内查找变量,没有向上一级查找,直到window,没有报错
而函数内 var x = 30 变成局部变量,不是全局变量,在其他局域块内是拿不到值的
所以 执行的顺序为: 变量提升,函数块提升 ,x=10,调用函数 局部x=30 , 调用foo函数 函数内没有局部变量x,上级查找x=10
继续:
var x = 10
bar()
function foo() {
console.log(x)
}
function bar() {
x = 30
foo()
}
结果:
分析 函数内修改全局变量后调用函数获取x值
继续:
var x = 10
bar()
var x = 20
function foo() {
console.log(x)
}
function bar() {
var x = 30
foo()
}
结果:10
分析:js执行顺序啊,函数提升啊