首页 新闻 会员 周边

关于var a=""不等于window.a的问题

0
悬赏园豆:10 [已解决问题] 解决于 2016-05-24 12:00

为什么这样写的结果都为The Window;

var aname="The Window";


console.log(aname);//The Window
console.log(window.aname)//The Window

 

同样的代码写在$(function(){......})就不对了呢?

$(function(){
var aname="The Window";

console.log(aname);//The Window
console.log(window.aname)//underfind

});

JS
还能再菜点吗?的主页 还能再菜点吗? | 初学一级 | 园豆:84
提问于:2016-05-24 11:45
< >
分享
最佳答案
0

全域變數跟區域變數

全域變數就是window的屬性

function內var聲明的變數的生命週期只在function內,非全域變數

收获园豆:5
RosonJ | 老鸟四级 |园豆:4910 | 2016-05-24 11:49

不是很理解,我第二种也是写在$(function)里面啊

还能再菜点吗? | 园豆:84 (初学一级) | 2016-05-24 11:50

@还能再菜点吗?: 

第一種,加不加var都是全域變數,都會成為window的屬性

第二種,不加var也是全域變數,也會成為window的屬性;但是加了var就是區域變數,不會成為window屬性

RosonJ | 园豆:4910 (老鸟四级) | 2016-05-24 11:53

@RosonJ: 哦哦 ,作用域的问题,理解了

还能再菜点吗? | 园豆:84 (初学一级) | 2016-05-24 11:55

@RosonJ: 那是不是也就是说$(function(){.........})这个里面的变量就不是全局?

还能再菜点吗? | 园豆:84 (初学一级) | 2016-05-24 11:56

@还能再菜点吗?: 

不是,如我上面說的第二種的第一個情況

第一種,加不加var都是全域變數,都會成為window的屬性

第二種,不加var也是全域變數,也會成為window的屬性;但是加了var就是區域變數,不會成為window屬性

$(function(){
aname="The Window"; 

console.log(aname);//The Window
console.log(window.aname)//The Window
});

試試

RosonJ | 园豆:4910 (老鸟四级) | 2016-05-24 11:57

@RosonJ: 哦哦

还能再菜点吗? | 园豆:84 (初学一级) | 2016-05-24 11:59
其他回答(2)
0

 作用域的问题

 

var aname="The Window"; // 全局变量 aname


console.log(aname);//The Window
console.log(window.aname)//The Window

 

同样的代码写在$(function(){......})就不对了呢?

$(function(){
var aname="The Window";  // 局部变量 aname

console.log(aname);//The Window
console.log(window.aname)//underfind

});

收获园豆:5
Y2zz | 园豆:393 (菜鸟二级) | 2016-05-24 11:53

那是不是也就是说$(function(){.........})这个里面的变量就不是全局?

支持(0) 反对(0) 还能再菜点吗? | 园豆:84 (初学一级) | 2016-05-24 11:56

@还能再菜点吗?: Yes

$(function(){ 只能在这里面用 })

支持(0) 反对(0) Y2zz | 园豆:393 (菜鸟二级) | 2016-05-24 11:57
0

js是函数作用域。在函数中定义的变量,仅在函数内有效。

幻天芒 | 园豆:37175 (高人七级) | 2016-05-24 11:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册