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。


  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值