ES6 var 与 let 区别简析

var 与 let

var 声明大家都很熟悉,是js中最常用的变量声明方式;而let是es6中加入的新的声明方式,接下来我会对二者的区别进行简要的分析,

作用范围

var的方式,是与函数作用于绑定的,var即在函数中存在(ES6之前js不区分代码块的),而let是仅存在与当前的块级作用域绑定,它不会在代码块之外存在,也不会在内的其他代码块存在,称之为暂时性死区;如下例子:

// var
var a= 'a';
var fun = function(){
    var b = 'b';
    console.log(a);
}
fun();	//输出a
console.log(b);	//错误

//let
let c = 'c';
{
    let c = 'd';
    console.log(c);		//输出'd'
}
console.log(c);		//输出'c'

变量提升

var是存在变量提升的,即声明提升到函数顶部,而let不会提升,所以在声明前使用会报错。

// var
console.log(v); // 输出undefined
var v= 2;

//var 等同于如下代码
var v;
console.log(v); // 输出undefined
v= 2;

// let
console.log(l); // 报错
let l= 2;

不允许重复声明

var的重复声明会进行覆盖,而let不允许重复声明。

//var var
function fun() {
  var a = 1;
  var a = 2;
  console.log(a);	//输出2
}
// var let ,报错
function fun() {
  var a = 1;	
  let a = 2;	//Uncaught SyntaxError: Identifier 'a' has already been declared
}
//let var ,报错
function fun() {
  let a = 1;
  var a = 2;
}
//let let ,报错
function fun() {
  let a = 1;
  leta = 2;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值