JavaScript ES6中var、let、const分别什么时候使用?
es6里面不建议使用var了,因为var定义的变量没有块级作用域,还会出现变量提升的情况,这样经常会导致你意想不到的错误,而let就不会这样,const是定义那些不可以被重新赋值的变量,let是定义普通的变量。
其实大家说的还是比较含糊,因为const这个定义。
const:
如果定义了一个基本数据类型,比如number,string 。。。 这样的话是常量,绝对不可改变。
如果用const去定义一个Object或者Array,只能说Object或者Array本身是常量,但是还是可以他们添加删除或修改属性或者元素的。。。
建议:
为了让自己的代码可读性更好,建议定义完之后不再对其进行调整就用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);
不过用了之后要了解下严格模式下的写法,要不然一个坑接着一个坑,偏偏还在填完一个坑之后乐一下继续填下一个坑,为什么不选择一次跳过一大块坑,让以后出现的坑少一点呢✧(≖ ◡ ≖✿)
let
、const
在任何情况下都优于var
const
一旦定义就不可改变
大部分情况下const
的出场率比let
高很多,所以一般建议默认使用const
,除非一定要改变变量的值,再使用let
。
6 回答5.2k 阅读✓ 已解决
9 回答9.5k 阅读
5 回答3.7k 阅读✓ 已解决
4 回答8.1k 阅读✓ 已解决
7 回答10.1k 阅读
5 回答8.3k 阅读
2 回答10.5k 阅读✓ 已解决
const一般在require一个模块的时候用或者定义一些全局常量。而let是限制了变量的作用域,保证变量不会去污染全局变量。所以尽量将var改为用let。