全局变量与函数内的全局变量

全局变量与函数内的全局变量

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了吗??

正在回答

登陆购买课程后可参与讨论,去登陆

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

}


Python工程师 2017-11-20 18:32:04

 <script>var a = 567;window.onload=function show() {  a = 123;//定义全局变量值为123(覆写a的值为123)console.log(a);//输出全局变量123(被覆写,所以值为123); console.log(this.a);///*输出是window.a的值567,this指向window*/    var a=890; } </script>我是这样理解的:这里你需要设置一个局部变量,否则js引擎就会把show()中的全局变量a当作是window的全局变量。

潜狸 2017-11-20 17:17:49

!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>变量</title>

</head>
<body>
<script>
var a=5;
function wid(){
        a=10;
alert(a);
alert(this.a);
var a;
alert(a);
alert(this.a);
}
</script>
</body>
</html>

竟然什么都没弹出来

潜狸 2017-11-20 17:16:36

我直接把她的代码复制粘贴在编辑器中,什么也没弹出来

路径 2017-03-05 00:01:20

this 是指的调用函数的那个对象,

执行wid()的时候,是不是相当于执行window.wid();

window对象即全局对象,this.a 即就是window.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

我也不是很清楚。。。希望有高手指点。

卡布琦诺 2017-02-12 15:15:47

局部 JavaScript 变量

在 JavaScript 函数内部声明的变量(使用 var)是局部变量,所以只能在函数内部访问它。(该变量的作用域是局部的)。
您可以在不同的函数中使用名称相同的局部变量,因为只有声明过该变量的函数才能识别出该变量。这其中“有var”和“无var”的差别:如果你不用var,那么这个js引擎会一层一层地向上找父作用域中的变量,如果找到了,就用,如果找不到了,就会帮你定义一个全局的变量。上面这个例子充分说明了这一点。所以,如果你想在当前的作用域用声明变量,你一定要用var。


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
HTML5与CSS3实现动态网页 2018
  • 参与学习       1887    人
  • 提交作业       4643    份
  • 解答问题       5760    个

有HTML和CSS基础,却不知道如何进阶?本路径带你通过系统学习,完成从“会做网页”到“做出好的动态网页”的蜕变,迈出成为前端工程师的第一步。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师