JS学习之——JS中声明变量的原理,var a,b,c?

  • A+

JS学习之——JS中声明变量的原理,var a,b,c?

问题:

<script>

function show(){

var a=b=c=d=5;    }

show();

alert(a); alert(b); alert(c); alert(d);//弹a时报错(not defined),而b、c、d都能弹出5

</script>

为什么会出现这种情况呢,原因主要是,在这个表达式中,只有a 在函数中被声明了,在Js中函数的赋值是从右向左结合的:var a=b=c=d=5  等价于 var a=(b=(c=(d=5))); 这其中只有a是被声明了,b,c,d自动被默认为全局变量;

又因为alert函数是绑定在window上的全局函数,故访问不了局部函数中声明的变量a,只能访问全局函数中的变量b,c,d;这也就解释了弹a时报错,b,c,d可以正常弹出;

weinxin
我的微信
这是我的微信扫一扫
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: