[ES6] 细化ES6之 -- 块级作用域

所谓的块级作用域,可能是一个{},一个代码块,一句话

 

let关键字
let 与 var 区别
区别varlet
变量提升
作用域全局作用域、函数作用域全局作用域、函数作用域和块级作用域
提前声明
重复声明
重新赋值

let或const没有声明提前,相当于暂时性死区(TDZ)

 

与函数的关系
  • var
var v = 100;
function fn() {
    console.log(v);// undefined
    var v = 1000;
    console.log(v);// 1000
}
fn();
  • let
let v = 100;
function fn() {
    // 函数作用域封闭–全局作用域中的变量与当前函数作用域无关
    console.log(v);// Cannot access 'v' before initialization
    let v = 1000;
    console.log(v);// 1000
}
fn();

使用let关键字全局的变量和当前的无关(封闭)

 

块级作用域

块级作用域只能用let关键字,但是let关键字用在全局作用域、函数作用域、块级作用域中

 

为什么需要块级作用域
  • 局部变量可能覆盖全局变量

  • 在循环体中用于计数的变量泄露为全局变量

 

循环语句与数组的关系

æ— æ ‡é¢˜

var arr = [];
for (var i = 0; i < 10; i++){
    arr[i] = function () {
        return i
    }
}
console.log(arr);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值