一、
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;原文地址:https://www.cnblogs.com/chinatrump/p/11496710.html
时间: 2024-10-17 21:10:20