javascript - js函数内变量只声明不赋值的问题

查看:399
本文介绍了javascript - js函数内变量只声明不赋值的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

 function box(obj){
        var obj;
//        obj = {name:122}
        console.log(obj);
    }
    var obj = new Object({name:1});
    box(obj);
    console.log(obj.name);

js函数体内,如果只是声明一个同名变量但是不赋值,这个时候为什么还是可以访问全局变量?

这个时候不是由于有局部变量的存在访问应该返回undefined嚒

解决方案

造成这个问题主要原因是您把变量声明和变量赋值理解混了。变量声明发生在编译器,而变量赋值发生在执行期。var obj; // 只是变量的声明,发生在编译期,不管您写不写,函数内的变量声明都会提前。js在执行时会对相同变量声明作归纳的处理,以最近的变量赋值作为变量在执行时的值。您这边最近的变量赋值是您传入的全局的obj。

这篇关于javascript - js函数内变量只声明不赋值的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆