全局变量与函数内的全局变量
var a=5;
function wid(){
a=10;
alert(a);
alert(this.a);
var a;
alert(a);
alert(this.a);
}
像这个,弹出来的是10 5 10 5,我想问下,我在函数里不是已经把a改成10了吗??
119
收起
正在回答
7回答
变量声明提升,你的代码等效为:
var a=5;
function wid(){
var a;
a=10; //这个a已为局部变量
alert(a); //局部变量a=10
alert(this.a); //this此时的执行环境为window环境(猜测,未完全理解),this.a=window.a,此时a为全局变量a=5
alert(a); //局部变量a=10
alert(this.a); //全局变量a=5
}
慕粉4232145
2017-02-25 23:44:39
<script type="text/javascript"> var a=1; //定义全局变量值为1; window.onload = function wid(){ a=2;//定义全局变量值为2(覆写a的值为2); alert(a);//输出全局变量2(被覆写,所以值为2); alert(this.a);//输出是window.a的值1,this指向window var a=3;//定义局部变量值为3; alert(a);//函数内部环境寻找 a 值为3,输出3; alert(this.a);//输出是window.a的值1,this指向window } </script>
this.a为什么指向是window对象??按照作用域的寻找,this应该是指向函数内部的a
我也不是很清楚。。。希望有高手指点。
HTML5与CSS3实现动态网页 2018
- 参与学习 1887 人
- 提交作业 4643 份
- 解答问题 5760 个
有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星