首先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。



友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信