ES6 var const let

  1. var

  1. var声明作用域

使用var在一个函数内部定义一个变量,就意味着变量将在函数退出时被销毁。(在函数内去掉var操作符之后,变量就变成了全局变量,只要调用一次函数,就会定义这个变量并可以在函数外部访问到)

  1. var声明提升

使用var声明的变量会自动提升到函数作用域的顶部

  1. let(let与var最明显的区别是 let声明的范围是块作用域,var声明的是函数作用域)

  1. 暂时性死区

let声明的变量不会在作用域中被提升

  1. 全局声明

let声明在全局作用域中发生,相应变量会在页面的生命周期内存续。必须确保页面不会重复声明同一变量。(在全局作用域中声明变量,let声明的变量不会成为window对象的属性,var声明的会)

var name = 'Matt';

console.log(window.name); // Matt

let age = 26;

console.log(window.age);// undefined

  1. 条件声明

  1. for循环中的let声明

let出现前,for循环定义的迭代变量会渗透到循环体外部:

for(var i = 0; i < 5; ++i){

//循环逻辑

}

console.log(i); // 5

使用let迭代变量的作用域仅限于for循环块内部:(虽然const变量和let变量很相似,但是不能用const来声明迭代变量,迭代变量会自增)

for(let i = 0; i < 5; ++i){

//循环逻辑

}

console.log(i); // ReferenceError : i没有定义

let每次迭代声明一个独立变量实例

  1. const

const的行为和let基本相同,唯一的重要区别就是它声明变量时必须同时初始化变量,且尝试修改const声明的变量会导致运行时错误。

const声明一个不会被修改的for循环变量,每次迭代只是创建一个新变量。这对for-of和for-in循环特别有意义:

let i = 0;

for(const j = 7; i < 5; ++i){

console.log(j);

}

// 7,7,7,7,7

for( const key in {a :1 ,b :2}){

console.log(key);

}

//a,b

for(const value of [1,2,3,4,5]){

console.log(value);

}

//1,2,3,4,5

总结

const优先,let次之。

使用const声明可以让浏览器运行时强制保持变量不变,在提前知道未来变量会有修改时,再使用let。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值