美文网首页
js 中let 和 var 的区别

js 中let 和 var 的区别

作者: 游戏创作者 | 来源:发表于2020-09-18 11:45 被阅读0次

首先我们看一个例子

for (var i=0;i<10;i++) {
 setTimeout(function(){
  console.log(i);
 }, 1000);
}

请问这段代码输出是什么~?


用var运行结果

把var换成let呢?


用let运行的结果

为什么会出现这种情况呢,接下来我们看完let和var的区别后就清楚了:
ES6 新增了let命令,用来声明局部变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效,而且有暂时性死区的约束。

1. 可以用let定义块级作用域变量:

在ES6之前,我们都是用var来声明变量,而且JS只有函数作用域和全局作用域,没有块级作用域,所以{}限定不了var声明变量的访问范围。也就是说,let只对它所在的最内侧块内有效,而var的范围至少是一个函数之内。

2. let 配合for循环的独特应用:

let非常适合用于 for循环内部的块级作用域。JS中的for循环体比较特殊,每次执行都是一个全新的独立的块作用域,用let声明的变量传入到 for循环体的作用域后,不会发生改变,不受外界的影响。

3. let没有变量提升与暂时性死区:

用let声明的变量,不存在变量提升。而且要求必须 等let声明语句执行完之后,变量才能使用,不然会报Uncaught ReferenceError错误。

4. let变量不能重复声明:

let不允许在相同作用域内,重复声明同一个变量。否则报错:Uncaught SyntaxError: Identifier 'XXX' has already been declared

相关文章

  • js 中let 和 var 的区别

    首先我们看一个例子 请问这段代码输出是什么~? 把var换成let呢? 为什么会出现这种情况呢,接下来我们看完le...

  • JS中let和var的区别

    前言 ES6 新增了let命令,用来声明局部变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码...

  • js中var和let的区别

    首先var和let在js中都是变量的标识符,都可以定义一个变量,但二者也有区别,二者区别在于声明的次数。var可以...

  • js问题

    js中let和var定义变量的区别,主要体现在作用于的不同。 var定义的变量是全局变量或者函数变量。 let定义...

  • sample

    一、var与let JS中的块级作用域,var、let、const三者的区别 var是函数级作用域,没有块级作用域...

  • js ------ let 和 var 的区别

    let 和 var 的区别

  • js 2022经典面试题汇总

    1.JS数据类型有哪些 2.var、let、const区别 var存在变量提升,而let、const没有 let、...

  • JS中var、let、const区别

    在javascript中有三种声明变量的方式:var let const。let var const的区别?var...

  • js中let、var、const区别

    块级作用域绑定的let const 为JavaScript引入了词法作用域,它们声明的变量不会提升,而且只可以在声...

  • js中const,var,let区别

    今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章。主要内容是:js中三种定义变量的方式const,...

网友评论

      本文标题:js 中let 和 var 的区别

      本文链接:https://www.haomeiwen.com/subject/fohlyktx.html