let知识点总结

1、let关键字声明的变量,只在块中有效

2、let可以提供闭包,并防止循环变量的泄露

3、for特例,小括号是一个独立的作用域,大括号是一个独立的作用域

for(let i = 0; i < 3; i++){
	let i = 3;
	console.log(i);
}

4、let不能变量提升

暂时性死区:let不进行变量提升, 它会绑定到一个块作用域上。从块作用域的头部到let声明之间的范围(TDS: temporal dead zone)。
变量提升:var在预编译时将变量产生, 只是数值没有初始化,所以可以访问。
绑定:let在预编译的时候变量产生,但在let声明以前,不许使用。

5、不允许在同一个作用域内重复定义

6、解决了两种不合理的现象

// 块内的变量影响到块外
var a = 5;
function f(){
    console.log(a);
    if(true){
         var a = 3;
    }
}
f();

// 循环变量的泄露
for(var i = 0; i < 5; i++){
    
}
console.log(i);

7、立即执行函数和可以简化为一对大括号

(function(){
    var tmp = 5;
})();

{
    let tmp = 5;
}

console.log(tmp);

8、let声明的变量:内层可以访问外层的变量,外层不能访问内层的变量,内层退出后失效

9、块级作用域中的函数声明

ES5: 不允许在块结构中声明函数的 
ES6: 1. 允许在块结构中声明函数的
     2. 函数依然有预编译,函数名会提升到全局作用域或者函数作用域的头部
     3. 如果在块级作用域,会提升到块的头部
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值