使用let/const的定义的变量,不会绑定到window对象中,不能使用window.xx的形式使用

在总结 apply()与call()时发现一个问题:let 定义的变量使用 window.xx 的形式使用时打印 undefined ,经过尝试后在此进行小结。

先说结论:
使用 let / const 声明的全局变量,会被绑定到Script对象而不是Window对象,不能以Window.xx 的形式使用;使用 var 声明的全局变量会被绑定到Window对象;使用var / let / const 声明的局部变量都会被绑定到 Local 对象。注:Script对象、Window对象、Local对象三者是平行并列关系。

let num = 1
console.log(this.num)//undefined
console.log(this)//Window 里面没有num属性

//但是使用 var 定义的变量就会绑定到 window 对象上
var num2 = 2
console.log(this.num2)	//2
console.log(this)	//Window 有num2属性

验证见下代码及结果:

let aaa = 111;	//Script
const aab = 111;//Script
var aac = 111;debugger	//Window

在这里插入图片描述

let aaa = 111;	//Script
const aab = 111;	//Script
var aac = 111;	//Window 
function fn(){
	let aad = 111;	//Local
	const aae = 111;	//Local
	var aaf = 111;debugger	//Local
}
fn();

在这里插入图片描述

let aaa = 111;	//Script
const aab = 111;	//Script
var aac = 111;	//Window 
let obj = {
	uu:function(){
	let aag = 111;
	const aah = 111;
	var aai = 111;debugger
	}
}
obj.uu()

在这里插入图片描述
由②和③还能看出来,局部变量被绑定到 Local 对象上,与调用者即 this 指向无关。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值