window.a和var a的区别

首先window是一个全局对象。先看一下结果:

相同情况:

var a = 1   //function(){console.log(this)}

window.a = 2  //function(){console.log(this)}

测试结果 constructor和proto和this指向(window)都一样

不同情况:

第一种情况:


结果是undefined

第二种情况:


结果是报错信息 c is not defined

第三种情况:

console.log(window.a);   --> undefined

console.log(b.a)   -->b is not undefined  //由于b不是已经存在的对象所以会报错


现在来说一下原因:

1.首先window是全局对象,所以第三种情况中你想打印window中的a,由于window是全局中存在的对象,他是存在的。所以不会显示未定义。只不过是他的属性a是不存在的。就比如下列这种情况:


2.第二种情况  如果你想直接打印c,他会默认c是一个变量。但是c在全局中没有声明。所以会有报错信息。

3.第一种情况,是由于d是利用var定义好的变量,但是没有给他赋值,所以初始值为undefined。


猜你喜欢

转载自blog.csdn.net/liuyahui_0126/article/details/80266760