JS中let命令和var命令的区别

let命令和var命令的区别

  1. 全局作用域

    let和var 声明的变量在全局作用域中被定义时,两者非常相似

    var声明的变量会作为全局对象window的属性

  2. 函数作用域

    var 和 let 在函数作用域中声明一个变量,两个变量的意义是相同的。

  3. 块级作用域

    let只在for()循环中可用,而var是对于包围for循环的整个函数可用

  4. let 和var 重新声明

    var允许在同一作用域中声明同名的变量,而let不可以

    s6中还有一个声明变量的命令const,const和let都是在声明的块作用域中有效,但是let声明的变量可变,值和类型都可以改变,没有限制。const声明额变量不能改变,所以,const一旦声明一个变量,就必须马上初始化,不能留到以后赋值。

 

为什么运用let命令

let 在块作用域中有效,有的时候,我们为了降低变量污染的风险,在块作用域中使用let来代替var,这样不会污染块作用域的外部作用域,降低 bug率,使代码更安全

 

摘自javascript中let和var的区别 - 技术 | 媛代码社区 (ydmgirls.com)

 

2.1 ES6 let 与 const | 菜鸟教程 (runoob.com)

 

新增的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声明变量的的访问范围。

 

posted @ 2021-11-18 20:33  东八区  阅读(64)  评论(0)    收藏  举报