javascript 变量提升的问题

function ad(a){
  var a ;
  console.log(a);
}
ad(3)

为什么不是输出 undefined

阅读 3.2k
4 个回答
  1. 使用var语句多次声明一个变量不仅是合法的,而且也不会造成任何错误.

  2. 如果重复使用的一个声明有一个初始值,那么它担当的不过是一个赋值语句的角色.

  3. 如果重复使用的一个声明没有一个初始值,那么它不会对原来存在的变量有任何的影响.
    很显然你的符合第三点。

因为命名重复var a;会被忽略。

function ad(a){
  var a = "" ;
  console.log(a);
}
ad(3)

undefined表示“未定义”,所以会查找父域,父域值是参数值。

函数内部进行预解释之前,已经进行实参向形参赋值,相当于var a=3;所以这时console.log的时候a直接就在本域查找,就等于3.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题