es6

1 let

作用:声明变量。用法类似于var,但它所声明的变量,只在let命令所在的代码块内有效。

不存在变量提升,变量一定要在声明后使用,否则报错。

不允许重复声明,let不允许在相同作用域内,重复声明同一个变量。

2 块级作用域

ES5只有全局作用域和函数作用域,没有块级作用域,这带来很多不合理的场景。(1)内层变量可能会覆盖外层变量。(2)用来计数的循环变量泄露为全局变量。

let实际上为JavaScript新增了块级作用域。另外可以用{}声明一个块级作用域。

外层作用域无法读取内层作用域的变量。也不会受到内层作用域变量的影响。块级作用域的出现,实际上使得获得广泛应用的立即执行匿名函数(IIFE)不再必要了。

另外,ES6也规定,函数本身的作用域,在其所在的块级作用域之内。

3 const

const 声明一个只读的常量。一旦声明,常量的值就不能改变。作用域与let命令相同:只在声明所在的块级作用域内有效,不提升,不可重复声明。

4字符串的扩展

(1)模板字符串(template string)是增强版的字符串,用反引号(`)标识。它可以当作普通字符串使用,也可以用来定义多行字符串,或者在字符串中嵌入变量。

(2)字符串的遍历:

ES6为字符串添加了遍历器接口,使得字符串可以被for...of循环遍历。

includes()、startsWith()、endsWith():

传统上,JavaScript只有indexOf方法,可以用来确定一个字符串是否包含在另一个字符串中。ES6又提供了三种新方法。

includes():返回布尔值,表示是否找到了参数字符串。

startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。

endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。

 

5数组的扩展

Array.from():用于将两类对象转为真正的数组:类似数组的对象(array-likeobject)和可遍历(iterable)的对象。

下面是一个类似数组的对象,Array.from将它转为真正的数组。

实际应用中,常见的类似数组的对象是DOM操作返回的NodeList集合,以及函数内部的arguments对象。Array.from都可以将它们转为真正的数组。

Array.of():用于将一组值,转换为数组。

这个方法的主要目的,是弥补数组构造函数Array()的不足。因为参数个数的不同,会导致Array()的行为有差异。

上面代码中,Array方法没有参数、一个参数、三个参数时,返回结果都不一样。只有当参数个数不少于2个时,Array()才会返回由参数组成的新数组。参数个数只有一个时,实际上是指定数组的长度。

Array.of基本上可以用来替代Array()或new Array(),并且不存在由于参数不同而导致的重载。它的行为非常统一。

Array.of总是返回参数值组成的数组。如果没有参数,就返回一个空数组。

数组实例的find()和findIndex():

数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。

上面代码中,find方法的回调函数可以接受三个参数,依次为当前的值、当前的位置和原数组。

数组实例的findIndex方法的用法与find方法非常类似,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。

 

(6):函数扩展

箭头函数:ES6允许使用“箭头”(=>)定义函数。

上面的箭头函数等同于:

如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。

如果箭头函数的代码块部分多于一条语句,就要使用大括号将它们括起来,并且使用return语句返回。

由于大括号被解释为代码块,所以如果箭头函数直接返回一个对象,必须在对象外面加上括号。

箭头函数可以与变量解构结合使用。

箭头函数的一个用处是简化回调函数,使得表达更加简洁。

扩展运算符:扩展运算符(spread)是三个点(...)。将一个数组转为用逗号分隔的参数序列。

(7):Set结构

Set:ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set本身是一个构造函数,用来生成Set数据结构。

上面代码通过add方法向Set结构加入成员,结果表明Set结构不会添加重复的值。

Set函数可以接受一个数组(或类似数组的对象)作为参数,用来初始化。

上面代码中,也展示了一种去除数组重复成员的方法。

向Set加入值的时候,不会发生类型转换,所以5和"5"是两个不同的值。Set内部判断两个值是否不同,使用的算法叫做“Same-value equality”,它类似于精确相等运算符(===),主要的区别是NaN等于自身,而精确相等运算符认为NaN不等于自身。

上面代码向Set实例添加了两个NaN,但是只能加入一个。这表明,在Set内部,两个NaN是相等

Set实例的方法分为两大类:操作方法(用于操作数据)和遍历方法(用于遍历成员)。下面先介绍四个操作方法。

   add(value):添加某个值,返回Set结构本身。

   delete(value):删除某个值,返回一个布尔值,表示删除是否成功。

   has(value):返回一个布尔值,表示该值是否为Set的成员。

clear():清除所有成员,没有返回值。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值