es6编程 var let const总结

块级作用域

使用let声明块级作用域变量:

let a = 'test';

console.log(a); // test

 

if (true) {

    let b = 1;

}

console.log(b); // error: b is not defined

 

由此可见,块级作用域变量作用范围在'{}'内,另外在单个块级作用域内,同一个变量只能声明一次,重复声明JS引擎会抛出异常。

if (true) {

    let a = 1;

    let a = 2;

}

// Uncaught SyntaxError: Identifier 'a' has already been declared

而在ES5规范中,只有闭包作用域,没有块级作用域设计,那何为闭包作用域呢?

// ES5

if (true) {

    var a = 1;

}

console.log(a); // 1

 

(function foo() {

    var b = 2;

})();

console.log(b);

// Uncaught ReferenceError: a is not defined

使用var还有一个弊端是声明部分会提前,这样的代码非常不规范严谨,典型的场景如下:

if (a in window) {

    var a = 2;

}

console.log(a); // 2

基于以上分析,在ES6编程中完全可以使用let替代var,几点好处:

·      使用块级作用域

·      摒除var变量带来的副作

·      在将来多线程开中,let变量在线程之间不能共享,可保线程安

除了letES6还给我们带来了const关键字,用以声明常量。

const a = 1;

a = 2;

// Uncaught TypeError: Assignment to constant variable.

常量的典型使用场景如下:

·      全局境不能量,必使用常量

·      所有函数均使用常量

俗话说『存在即合理』,那使用const又能带来什么样的优势呢?

   1、运行效率

JS引擎会会优化const,多使用const将一定程度上提高运行效率。这类似于在java中声明一个整型数据变量,使用short会比intlong性能更优,因为前者所占系统空间更小。

   2、开发者友好

变量,顾名思义是不可变的量,开发协作者看到常量声明,就明白它是不能被修改的。

   3、保证代码的健壮性 

在全局作用域内,经常会设计一些系统配置参数,这些参数通常作用于整个系统,一旦被修改就会造成系统bug。在ES5开发模式中,通常有两种实现方式:

·      使用大写字母的标识

·      引入命名空,减少全局量的声明

这些做法仅从形式上尽量规避问题,且需要在团队内约定规范,因此不可信任。在引入常量机制后,可彻底避免修改操作,从而保证系统的健壮性。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值