ES6入门

ES6 入门

前言

此手册会收集尽可能多的资料来完善

1、let 和const

​ ES6 新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。

1
2
3
4
5
6
7
{
let a = 10;
var b = 1;
}

a // ReferenceError: a is not defined.
b // 1

const声明一个只读的常量。一旦声明,常量的值就不能改变。

1
2
3
4
5
const PI = 3.1415;
PI // 3.1415

PI = 3;
// TypeError: Assignment to constant variable.

上面代码表明改变常量的值会报错。

const声明的变量不得改变值,这意味着,const一旦声明变量,就必须立即初始化,不能留到以后赋值。

1
2
const foo;
// SyntaxError: Missing initializer in const declaration

上面代码表示,对于const来说,只声明不赋值,就会报错。

const的作用域与let命令相同:只在声明所在的块级作用域内有效。

在我们开发的时候,可能认为应该默认使用 let 而不是 var,这种情况下,对于需要进行写保护的变量要使用 const。

然而另一种做法日益普及:默认使用 const,只有当确实需要改变变量的值的时候才使用 let。这是因为大部分的变量的值在初始化后不应再改变,而预料之外的变量的修改是很多 bug 的源头。

1
2
3
4
5
6
7
8
9
10
// 例子 1-1

// bad
var foo = 'bar';

// good
let foo = 'bar';

// better
const foo = 'bar';

2、模板字符串

1.模板字符串

ES6中提供了模版字符串,**用`(反引号)标识,用${}将变量括起来**

需要拼接字符串的时候尽量改成使用模板字符串:

1
2
3
4
5
6
7
// 例子 2-1

// bad
const foo = 'this is a' + example;

// good
const foo = `this is a ${example}`;

在模板字符串中,空格、缩进、换行都会被保留:

2. 标签模板

1
2
3
4
5
6
let message = `
Hi,
Daisy!
I am
Kevin.
`;

出于可读性或者其他原因,我希望书写的时候是换行的,但是最终输出的字符是在一行,这就需要借助模板标签来实现了,我们尝试写一个这样的函数:

1
2
3
4
5
6
7
8
9
10
11
12
// oneLine 第一版
function oneLine(template, ...expressions) {
let result = template.reduce((prev, next, i) => {
let expression = expressions[i - 1];
return prev + expression + next;
});

result = result.replace(/(\s+)/g, " ");
result = result.trim();

return result;
}

实现原理很简单,拼合回去然后将多个空白符如换行符、空格等替换成一个空格。

使用如下:

1
2
3
4
5
6
7
let message = oneLine `
Hi,
Daisy!
I am
Kevin.
`;
console.log(message); // Hi, Daisy! I am Kevin.

Continue!

Reference

【1】阮一峰 ES6入门

【2】掘金 ES6完全手册

-------------The End-------------

本文标题:ES6入门

文章作者:JunYiZzz

发布时间:2018年11月29日 - 10:11

最后更新:2018年11月29日 - 14:11

原始链接:https://junyizzz.github.io/ES6/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。