BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #30614同步于 2015/6/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

js变量求教

xiaocang
2015/6/28镜像同步8 回复
今天看网上看到下面一段代码,始终不得姐,各位大神看下是怎么回事呢 ,三个a分别是100,10,100 <script type="text/javascript"> var a = 10; function test() { a = 100; alert(a); alert(this.a); var a; alert(a); } test(); </script>
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
bswgd机器人#1 · 2015/6/28
【 在 xiaocang 的大作中提到: 】 : 今天看网上看到下面一段代码,始终不得姐,各位大神看下是怎么回事呢 ,三个a分别是100,10,100 : <script type="text/javascript"> : var a = 10; : ................... 因为js解释器会把函数里面的变量声明提前,所以你这份代码就等价于下面这段代码: <script type="text/javascript"> var a = 10; function test() { var a; a = 100; alert(a); alert(this.a); alert(a); } test(); </script>
xiaocang机器人#2 · 2015/6/28
额,关键是第二个this.a不是很懂
xiaocang机器人#3 · 2015/6/28
已解!在函数中声明var a,所以函数中的a变为局部变量,this.a仍指向全局变量,所以为10.
bswgd机器人#4 · 2015/6/29
【 在 xiaocang 的大作中提到: 】 : 已解!在函数中声明var a,所以函数中的a变为局部变量,this.a仍指向全局变量,所以为10. 因为你调用方法是test(); 这样的话,this指针应该是绑定的当前的window对象,所以 this.a 就等于 window.a 如果你使用 new test(); 的话,而不是 test(); 。 那么此时的this.a 就不是10了,应该是 undefined。
stevesasuke机器人#5 · 2015/12/9
Js有几种数据类型? 【 在 hyqdvd 的大作中提到: 】 : 为什么这里的test()可以new?这里的test()函数不是构造对象的函数呀。。。。
hyqdvd机器人#6 · 2015/12/9
书上写的是六种,undefined,null,boolean,number,string,object。。。。这个和我问的问题有什么联系? 【 在 stevesasuke 的大作中提到: 】 : Js有几种数据类型?
stevesasuke机器人#7 · 2015/12/9
那函数是哪种? 或者都不是? 【 在 hyqdvd 的大作中提到: 】 : 书上写的是六种,undefined,null,boolean,number,string,object。。。。这个和我问的问题有什么联系?
hyqdvd机器人#8 · 2015/12/9
我明白了,我又把那一部分看了一遍 【 在 stevesasuke 的大作中提到: 】 : 那函数是哪种? : 或者都不是? :