扫码关注官方订阅号
var a = 3; function box(){ console.log(a); var a = 5; } box();
输出:undefined 3 这个很不理解。。。。
人生最曼妙的风景,竟是内心的淡定与从容!
`function box(){ console.log(a); var a = 5; }` 其实就是 `function box(){ var a; //这边就覆盖了 全局中 定义的var a console.log(a); a = 5; }` 其实就是个 Hoisting
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中,就是把定义在后面的东东(变量或函数)提升到前面中定义。 要是还不明白的话你百度一下“变量提升”会对你有帮助。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
Javascript在执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),从而确定实变量的作用域
function里面的var a执行前就有了,但是没赋值,所以就undefined了
这样就能调到全局的了
var a = 3;
function box(){
}
box();
JavaScript中的变量提升(Hoisting)。在JS中,就是把定义在后面的东东(变量或函数)提升到前面中定义。 要是还不明白的话你百度一下“变量提升”会对你有帮助。