ES6编码风格
# 一、块级作用域
# 1.1 let取代var
ES6提出了两个新的声明变量的命令:let和const。其中,let完全可以取代var,因为两者语义相同,而且let没有副作用var命令存在变量提升效用,let命令没有这个问题- 建议不再使用
var命令,而是使用let命令取代
"use strict";
if(true) {
console.log(x); // ReferenceError
let x = 'hello';
}
@前端进阶之旅: 代码已经复制到剪贴板
- 上面代码如果使用
var替代let,console.log那一行就不会报错,而是会输出undefined,因为变量声明提 升到代码块的头部。这违反了变量先声明后使用的原则
# 1.2 全局常量和线程安全
- 在
let和const之间,建议优先使用const,尤其是在全局环境,不应该设置变量,只应设置常量。这符合函数式编程思想,有利于将来的分布式运算。
// bad
var a = 1, b = 2, c = 3;
// good
const a = 1;
const b = 2;
const c = 3;
// best
const [a, b, c] = [1, 2, 3];
@前端进阶之旅: 代码已经复制到剪贴板
const声明常量还有两个好处,一是阅读代码的人立刻会意识到不应该修改这个值,二是防止了无意间修改 变量值所导致的错误- 所有的函数都应该设置为常量
- let表示的变量,只应出现在单线程运行的代码中,不能是多线程共享的,这样有利于保证线程安全
# 1.3 严格模式
V8引擎只在严格模式之下,支持let和const。结合前两点,这实际上意味着,将来所有的编程都是针对严 格模式的。
# 二、字符串
- 静态字符串一律使用单引号,不使用双引号。动态字符串使用反引号
// bad
const a = "foobar";
const b = 'foo' + a + 'bar';
// good
const a = 'foobar';
const b = `foo${a}bar`;
const c = 'foobar';
@前端进阶之旅: 代码已经复制到剪贴板