为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕村9548890 2018-10-18 14:15:20
 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嚒
查看完整描述

1 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

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


查看完整回答
反对 回复 2018-11-22
  • 1 回答
  • 0 关注
  • 2284 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信