附录B:了解ES7(2016)
ES6经历了4年的发展,之后TC-39决定将发布周期转换为每年一版,以确保新语言特性能够更快地发展。
ES6中添加了三个语法特性,下面一一来讲。
第1节 指数运算符
1. 在之前的时候,可以通过 Math.pow() 方法来执行求幂运算,但这毕竟是一个方法,一些开发者更希望通过操作符就可以实现这个功能。所以在ES6中,使用了两个星号 “**”,来作为求幂运算符。其中:左操作数是基数,右操作数是指数。例如,
let result = 5 ** 2;
console.log(result); // 25
console.log(result === Math.pow(5, 2));
2. 求幂运算符在JavaScript所有二进制运算符中具有最高的优先级(一元运算符的优先级高于 **)。例如,
let result = 2 * 5 ** 2;
console.log(result); // 50
第2节 Array.prototype.includes()方法
1. 该方法接受两个参数:要搜索的值及开始搜索的索引位置,第二个参数可选。例如,
let values = [1, 2, 3];
console.log(values.includes(1)); // true
console.log(values.includes(0)); // false
// start the search from index 2
console.log(values.includes(1, 2)); // false
2. 注意,该方法和Object.is()方法有所不同。+0、-0在该方法中被认为是相同的,在Object.is()方法中被认为是不同的。
第3节 函数作用域严格模式的一处改动
函数中存在“use strict”时,实现运行在严格模式下的参数非常困难,因为参数默认值也可以是函数。这个难点导致大多数JavaScript引擎均不实现此功能,而是将其等同于全局对象。
由于实现困难,ES2016规定在参数被解构或有默认参数的函数中,禁止使用 “use strict”指令。只有参数为不包含解构或默认值的简单参数列表时,才可以在函数体中使用 “use strict”。例如,
//此处使用简单参数列表,可以运行
function okay(first, second)
{
"use strict";
return first;
}
//抛出语法错误
function notOkay1(first, second=first)
{
"use strict";
return first;
}
//抛出语法错误
function notOkay2({ first, second })
{
"use strict";
return first;
}
后记:该书一共十三章,加上后面两篇附录,也就是十五章的篇幅。从8.29号开始看,到现在整理完笔记,一共18天的时间。这半个多月的时间在持续地看书,做笔记,发布到博客,中间陆陆续续经历了一些想要放弃的念头,还是硬着头皮坚持下来了,这一刻,有一点 小小的激动,有一点小小的佩服自己。下面说一下自己在这一期间的一些感受、思考或者说收获吧,与大家分享。
对于学习技术来说,现在获取信息的渠道越来越多。例如:培训机构、看书、视频、专栏、博客、微博,甚至公众号等,越来越多的渠道可以供我们选择。那么在这么烟花缭乱的情况下,我们应该如何选择适合自己的获取信息渠道呢?
在我看来,这些渠道各有自己的优点,也有自己的缺点。下面一一来说一下自己的思考:
培训机构,有学习的氛围,但是学费、交通成本都比较大;
看书,相对系统,且有出版社为读者把关,图书内容质量有保证。缺点,可能更新速度比较慢。
视频,讲的细,有新的知识可以及时更新课程;但可能讲的比较慢,有的时候也不够系统。例如,在一些视频网站上学习某个语言的时候,发现它讲的只是整个知识体系中的一部分,你学完了视频,但是感觉掌握的还是不够系统,也就是说知识的完备性不够好。
专栏,一般属于提纲挈领式的,有深度,但是往往细节上可能稍微欠缺一些,这也是由它的篇幅决定的,但是好处就是可以随时随地在手机上看,比较方便。
博客、微博和公众号呢,好处是比较适合碎片化的时间去马上阅读一篇,欠缺的部分其实刚才也说过,一个是知识点的获取不够系统,另一个是它和出书不一样,可能内容的权威性需要读者有自己的思辨能力和判断能力。
综上,这些渠道可以综合起来使用,使用它的优势部分,而对于它欠缺的地方,可能其他渠道可以做个弥补。所以,我们要灵活掌握和运用这些渠道,让自己的技术能力一步一步提升上去。同时还可以考虑增加和拓宽自己的知识面,不拘泥和局限于技术,以使我们的路越走越宽。
(全书完)