function ad(a){
var a ;
console.log(a);
}
ad(3)
为什么不是输出 undefined
因为命名重复var a;
会被忽略。
使用var语句多次声明一个变量不仅是合法的,而且也不会造成任何错误.
如果重复使用的一个声明有一个初始值,那么它担当的不过是一个赋值语句的角色.
如果重复使用的一个声明没有一个初始值,那么它不会对原来存在的变量有任何的影响.
很显然你的符合第三点。
function ad(a){
var a = "" ;
console.log(a);
}
ad(3)
undefined表示“未定义”,所以会查找父域,父域值是参数值。