如果全局变量与局部变量同名,则局部变量将优先。这是因为局部变量在函数执行时会被推到作用域的最前端,从而在作用域链中具有更高的优先级。
直接看代码
var val = 10
function test(){console.log(val)var val = 100console.log(val)
}
test()
undefined //里打印的局部val,由于变量提升所以undefined
100 //局部val
由上面代码看到如果全局变量与局部变量同名,则局部变量将优先.
那么如果要在函数内部怎么拿到全局的val呢?
var val = 10
function test(){console.log(val)var val = 100console.log(val)console.log(window.val)
}
test()
undefined
100
10 //利用window.val可以拿到全局val
综上,我们可以通过window对象(在浏览器中)来访问全局变量。