java块级作用域_ES6基础之块级作用域

众所周知,ES6之前,javascript只有函数作用域。今天我们来聊聊ES6的新特性:块级作用域

var的迷思

ES6之前,声明变量的关键字var,在用var的时候是不是经常出现一些特别的特性,我们来回顾一下

声明提升

function print() {

console.log(value); // undefined

var value = "1";

console.log(value); // 1

}

复制代码

如上例,变量的定义是会提升的,在变量赋值之前使用,不会报错,输出的是undefined。所以前端规范经常会有一条,先赋值后使用,变量的声明一定要在使用之前

无块级作用域,只有函数级作用域

function print(condition) {

if (condition) {

var value = "1";

console.log(value); // 1

}

else {

console.log(value); // undefined

}

}

复制代码重复声明和定义

function print() {

var value = 1;

console.log(value);

// doSometing

var value = "hello";

console.log(value);

}

复制代码无法定义常量

var MAX_NUMBER = 1000;

复制代码

ES6之前定义常量都是使用全部大写的方式标识常量信息,但是这个常量是可以重新赋值的,前端规范中常量使用大写在一方面就是提醒大家在使用的时候注意,大写的是常量不要赋值。

块级作用域

为了解决上述的问题ES6祭出了两个关键词let和const,let替代变量定义,const补充了常量定义

问题1:声明提升

解决方案:TDZ(Temporal Dead Zone),临时死区

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值