《新时期的Node.js入门》读书笔记(四)

第3章 用ES6来书写Node

3.1 新时代的EMCAScript

ES2015的一个目标就是让JavaScript在语言层面有支撑大型应用的能力。

JavaScript的缺陷

ES5的语法缺陷:几乎无法支持模块化;没有很好的面向对象支持;没有局部作用域;各种令人惊喜的语法细节,例如0.1+0.2或者[]==[]等

Node对新标准的支持

Node在6.0版本及之后实现了对ES6的全面支持。
可以使用nvm管理Node版本

3.2 块级作用域

ES5中的作用域只有两种:全局作用域函数作用域
变量提升:指JavaScript解释器会将变量的声明提到当前作用域最前的现象,仅仅提升变量的声明,不会提升变量的值。

let关键字

let关键字会创建一个块级作用域,使用let关键字声明的变量只能在当前块级作用域中使用。
注意⚠️:

  1. 重复声明:在同一个块级作用域中,不能使用let关键字重复声明一个变量
  2. 变量提升:let关键字可以解决ES5中变量提升带来的问题。其实let在内部也存在变量提升,但是会存在一个临时死区,在这个临时死区内无法对变量进行取值或者赋值。

const关键字

被声明为const的变量不可以再被修改,也不能被重复声明。
const可以用于模块的引入
const声明的变量虽然不能被修改,但使用const修饰的对象却可以修改

3.3 数组

ES2015新增的原型方法:

copyWithin()、find()、findIndex()、fill()、entries()、keys()、values()

find()和findIndex()

用于查找数据中第一个符合条件的数组成员,接受一个回调函数作为参数,对于数据的每个成员都会按顺序执行这个回调函数,可以自己定义筛选条件。
find()函数返回相应元素的findIndex方法会返回对应元素的位置,它们都只匹配第一个满足条件的元素。
相比indexOf方法,新增的这两个方法可以用来处理NaN

from()方法

from方法用于将一个类数组对象转换为数组
ES5中可以使用Array.prototype.slice方法来将一个类数组对象转换成数组,但是需要调用call方法,否则返回一个空数组。

// ES5
var a1 = Array.prototype.slice.call(a);
// ES6
var a2 = Array.from(a);
//from 不是定义在prototype上的

fill()方法

fill方法用于给定的值来填充数组,通常用来初始化一个新建的array对象。

var a = new Array(5);
a.fill(0);

数组的遍历

ES6提供了三个新方法——entrieskeysvalues用于遍历数组,它们之间的区别在于keys是对键名的遍历,values是对键值的遍历,entries是对键值对的遍历。

var a = ['a', 'b', 'c']
for(let i of a.keys()) {
   
	console.log(i)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值