全局变量 变undefined,JS定义先后顺序谁帮忙理一下?

发布于 2022-09-02 15:58:46 字数 135 浏览 30 评论 0

var a = 3;
function box(){
    console.log(a);
    var a = 5;
}
box();

输出:undefined 3
这个很不理解。。。。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

清君侧 2022-09-09 15:58:46
`function box(){
    console.log(a);
    var a = 5;
}`

其实就是

   `function box(){
        var a; //这边就覆盖了 全局中 定义的var a
        console.log(a);
        a = 5;
    }`

其实就是个 Hoisting
迷路的信 2022-09-09 15:58:46

Javascript在执行前会对整个脚本文件的声明部分做完整分析(包括局部变量),从而确定实变量的作用域
function里面的var a执行前就有了,但是没赋值,所以就undefined了

var a = 3;
function box(){
    console.log(window.a);
     var a = 5;
}

这样就能调到全局的了

栖竹 2022-09-09 15:58:46

var a = 3;
function box(){

var a;
console.log(a);
a = 5;

}
box();
JavaScript中的变量提升(Hoisting)。在JS中,就是把定义在后面的东东(变量或函数)提升到前面中定义。 要是还不明白的话你百度一下“变量提升”会对你有帮助。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文