var a = 3;
function box(){
console.log(a);
var a = 5;
}
box();
输出:undefined 3
这个很不理解。。。。
var a = 3;
function box(){
console.log(a);
var a = 5;
}
box();
输出:undefined 3
这个很不理解。。。。
Javascript在执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),从而确定实变量的作用域
function里面的var a执行前就有了,但是没赋值,所以就undefined了
var a = 3;
function box(){
console.log(window.a);
var a = 5;
}
这样就能调到全局的了
var a = 3;
function box(){
var a;
console.log(a);
a = 5;
}
box();
JavaScript中的变量提升(Hoisting)。在JS中,就是把定义在后面的东东(变量或函数)提升到前面中定义。 要是还不明白的话你百度一下“变量提升”会对你有帮助。
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决