let的使用及注意事项

let块级作用域

只对大括号内元素有效

{
        let a=3;
        console.log(a);//a=3
 }
     console.log(a);//Uncaught ReferenceError: a is not defined

for循环对let的命令的使用

for (let i = 0; i < 10; i++) {
// 计数器i只在for循环体内有效,在循环体外引用就会报错
}

var a = [];
for (var i = 0; i < 10; i++) {
    a[i] = function () {
        console.log(i);
    };
}
a[6](); // 10

var b = [];
for (let j = 0; j < 10; j++) {
    b[j] = function () {
        console.log(j);
    };
}
b[6](); // 6

for循环的(父作用域)该部分是单独的作用域
for循环的{子作用域}

let的其他属性

1、let不允许在相同作用域内,重复声明同一个变量
2、var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为undefined;
let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错。
3、ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错

       let a =1;
       const b =2;
       var c =3;
       console.log(window.a);//undefined
       console.log(window.b);//undefined
       console.log(window.c)//3

let默认值

let [foo = true] = [];
let [x, y = 'b'] = ['a'];
console.log(foo,x,y);//true a b
    let [x = 1] = [undefined];       //x: 1
        console.log(x);
    let [x = 1] = [null];            //x: null
        console.log(x);

陷阱

let x; {x}={x: 1};

上面代码的写法会报错,因为 JavaScript 引擎会将{x}理解成一个代码块,从而发生语法错误。只有不将大括号写在行首,避免 JavaScript 将其解释为代码块,才能解决这个问题。
正确写法

let x; ({x} = {x: 1});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值