JS中let命令和var命令的区别
-
全局作用域
let和var 声明的变量在全局作用域中被定义时,两者非常相似
var声明的变量会作为全局对象window的属性
-
函数作用域
var 和 let 在函数作用域中声明一个变量,两个变量的意义是相同的。
-
块级作用域
let只在for()循环中可用,而var是对于包围for循环的整个函数可用
-
let 和var 重新声明
var允许在同一作用域中声明同名的变量,而let不可以
s6中还有一个声明变量的命令const,const和let都是在声明的块作用域中有效,但是let声明的变量可变,值和类型都可以改变,没有限制。const声明额变量不能改变,所以,const一旦声明一个变量,就必须马上初始化,不能留到以后赋值。
为什么运用let命令
let 在块作用域中有效,有的时候,我们为了降低变量污染的风险,在块作用域中使用let来代替var,这样不会污染块作用域的外部作用域,降低 bug率,使代码更安全
摘自
新增的let命令
ES6新增了let命令,用来声明局部变量。他的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效,而且有暂时性死区的约束。
let非常适合用于for循环内部的块级作用域。JS中的for循环体比较特殊,每次执行都是一个全新的独立的块作用域,用let声明的变量传入到for循环体的作用域后,不会发生改变,不受外界的影响。
{
let i = 1; // i变量只在花括号内有效!!!
}
console.log(i); // Uncaught ReferenceError: i is not defined
{
var i = 9;
}
console.log(i); // 9
var命令
只有函数作用域和全局作用域,没有块级作用域,{}不能限定var声明变量的的访问范围。

浙公网安备 33010602011771号