let

一、

1、

let 所声明的变量,除了在 Global scope 与 function scope 互不干扰之外,

在 Block scope、Loop scope 也是互不干扰。

let x = 1;
console.log(x);

function foo() {
    let x = 3;
    console.log(x);
}
foo();

{
    let x = 5;
    console.log(x);
}

2、

特别是 Loop scope,使用 let 写法之后,再也不用担心相同变量间会相互干扰了,

之前 var 的写法怕相同变量间会相互干扰,所以要使用时都要 reset 一次才敢用。

以下例子随便乱举,仅供参考。

for (let i = 1; i = 1; i--) {
    let s = "";
    for (let j = 1; j

二、

1、不同于 var,let 不能去重新声明变量。
let x = 1;
let x = 100; // Not allowed
console.log(x);

function foo() {
    let x = 3;
    let x = 300; // Not allowed
    console.log(x);
}
foo();

{
    let x = 5;
    let x = 500; // Not allowed
    console.log(x);
}

2、对于 var 所声明的变量,let 也不能去重新声明变量。

var x = 1;
let x = 100; // Not allowed
console.log(x);

function foo() {
    var x = 3;
    let x = 300; // Not allowed
    console.log(x);
}
foo();

{
    var x = 5;
    let x = 500; // Not allowed
    console.log(x);
}

3、对于 let 已经声明的变量,var 也不能去重新声明变量。

let x = 1;
var x = 100; // Not allowed
console.log(x);

function foo() {
    let x = 3;
    var x = 300; // Not allowed
    console.log(x);
}
foo();

{
    let x = 5;
    var x = 500; // Not allowed
    console.log(x);
}

三、

用 var 声明的 global variable 在 HTML 观点,可以用 windows.object 去取

var carName = "Volvo";
console.log(window.carName);

但用 let 声明的 global variable,则不能用 windows.object 去取

let carName = "Volvo";
console.log(window.carName); // can‘t to get value

四、

对于 var 可以先使用再声明,但 let 不行(请参考JavaScript Hoisting)。

x = 100;
console.log(x);
var x;

// will have error
y = 300;
console.log(y);
let y;

原文:大专栏  let

原文地址:https://www.cnblogs.com/chinatrump/p/11496710.html

时间: 2024-10-17 21:10:20