ES6中let 与const,以及var的区别
本文主要讲解ES6中let与const,以及与var的区别。
写文章是为了锻炼一下自己的书写能力以及更加深入理解。如果你也是前端,不太会ES6的一些语法,或者是你刚接触JavaScript,都可以跟着文章练习起来,相信会对你学习 JavaScript有所帮助。
var
- 使用var申明的变量,是全局变量。
function textVar(){
var a=30;
if(true){
var a=50;
console.log(a);//50
};
console.log(a);//50 找离他最近的a
};
let
- let有作用域的概念,他只在let命令所在的代码块内有效。
function textLet(){
let a=30;
if(true){
let a=50;//有作用域的概念
console.log(a);//50
};
console.log(a);//30
};
textLet();
- let非常适合在for循环中使用,如果在外部读取,则会报错。
for (let i = 0; i < 10; i++) {
// ...
}
console.log(i);
// ReferenceError: i is not defined
let 与var的区别
- let不存在变量提升,var会出现变量提升的情况,也就是说在变量没有申明的情况下去使用,但是它的值为undefined,let就不存在这种情况,let不允许在没有申明的情况下去使用,
console.log(foo); //undefined
var foo = 2;
console.log(bar); //ReferenceError
let bar = 2;
- let不允许重复声明,不允许在相同作用域内,重复声明同一个变量。但var可以,只不过它的值会被覆盖。
function letAndVar() {
let a = 10;
var a = 1;
}
// 报错
function letAndVar() {
let a = 10;
let a = 1;
}
// 报错
function letAndVar() {
var a = 10;
var a = 1;
}
// 正常,但是a的值会为1
const
- 一但申明,不可修改,他是一个常量。
const x=10;
x=100;
console.log(x);//Uncaught TypeError: Assignment to constant variable.
- 定义数组
const colors=[];
colors.push('red');
colors.push('green');
console.log(colors)