JavaScript ES6中var、let、const分别什么时候使用?

JavaScript ES6中var、let、const分别什么时候使用?

阅读 30.4k
11 个回答

const一般在require一个模块的时候用或者定义一些全局常量。而let是限制了变量的作用域,保证变量不会去污染全局变量。所以尽量将var改为用let。

赋值之后不会再做修改了就用const,如果后边还会修改就用let,不建议使用var

const 常量
let 变量,块作用域,不能重复声明覆盖
var 变量,函数作用域,能重复声明覆盖

es6里面不建议使用var了,因为var定义的变量没有块级作用域,还会出现变量提升的情况,这样经常会导致你意想不到的错误,而let就不会这样,const是定义那些不可以被重新赋值的变量,let是定义普通的变量。

不写var,全部写const,要修改值的时候再修改为let。

其实大家说的还是比较含糊,因为const这个定义。

const:

  1. 如果定义了一个基本数据类型,比如number,string 。。。 这样的话是常量,绝对不可改变。

  2. 如果用const去定义一个Object或者Array,只能说Object或者Array本身是常量,但是还是可以他们添加删除或修改属性或者元素的。。。

建议:
为了让自己的代码可读性更好,建议定义完之后不再对其进行调整就用const,反之用let,var的话尽量少用或不用

const一旦定义,无法更改,let定义块级变量,他们都是无法重复声明的,会报错,而var可以覆盖之前的声明

这是我做的笔记,把一个个注释解开封印,然后看下控制台报错信息,能加深了解。

"use strict";
// error:Block-scoped declarations (let, const, function, class) not yet supported outside strict mode,一些ES6里声明的方法必须在严格模式上才能使用,不然会报此错误

const a=1;
// const a=2;
// error:Identifier 'a' has already been declared
// a=2;
// error:Assignment to constant variable.
// 【const是常数变量,即一般在require一个模块的时候用或者定义一些全局常量,一旦定义,无法更改,无法重复赋值】
document.write('a: '+a+'<br />');

let b=1;
// let a=2; 
// error:Identifier 'a' has already been declared
// 【let 变量,块作用域,不能重复声明覆盖,限制了变量的作用域,保证变量不会去污染全局变量,所以尽量将var改为用let。】
b=2;
document.write('b: '+b+'<br />');

var c=1;
var c=2;
c=3;
document.write('c: '+c);

不过用了之后要了解下严格模式下的写法,要不然一个坑接着一个坑,偏偏还在填完一个坑之后乐一下继续填下一个坑,为什么不选择一次跳过一大块坑,让以后出现的坑少一点呢✧(≖ ◡ ≖✿)

  1. letconst在任何情况下都优于var

  2. const一旦定义就不可改变

  3. 大部分情况下const的出场率比let高很多,所以一般建议默认使用const,除非一定要改变变量的值,再使用let

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏