let、var、const的区别

1.let命令是ES6中新增的一个命令,用于声明变量,该命令的用途有点类似于传统的var的定义变量,但是let的作用域是在一个块中才有作用,例如:

{
	let x = 100;
	var y = 99;
}
a //ReferenceError:a is not defined
b //99

let 命令比较适用于for循环的内部,因为该变量的作用域仅仅在for{}内部,出了这个域就不能用了

for(let i=0;i<100;i++){
	//....
}

console.log(i) //ReferenceError:i is not defined


var 声明的变量,相当于全局变量。

var a = [];
for (var i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 10
这里面的var定义的i就是全局变量,随着遍历的进行,该值一直在变化,例如:第一轮遍历,a[0]==0,第二轮遍历:a[0] == a[1] = 1,第三轮遍历a[0] == a[1] == a[2] =2 。。。,所以遍历完成之后,a[0]==a[1]==....a[6]==...a[9] =10


如果,此时用let声明时:

var a = [];
for (let i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 6
这个值就是特定的值了。



2.var 定义变量之前,使用的时候不会报错,而let定义变量前使用会报错

// var 的情况
console.log(foo); // 输出undefined
var foo = 2;

// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;


3.let在相同的作用域中不允许重复定义

// 报错
function () {
  let a = 10;
  var a = 1;
}

// 报错
function () {
  let a = 10;
  let a = 1;
}


const:是声明常量的命令,该命令声明的变量不允许改变

const PI = 3.1415;
PI // 3.1415

PI = 3;
// TypeError: Assignment to constant variable.






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值