ES6学习记录

1、let 和 const 命令

let正则表达式

一、let用来声明变量,只在本身的代码块中生效数组

二、let不存在变量提高数据结构

3、暂时性死区:若是区块中存在letconst命令,这个区块对这些命令声明的变量,从一开始就造成了封闭做用域。凡是在声明以前就使用这些变量,就会报错dom

4、不容许重复声明函数

5、存在块级做用域(缘由:循环中的变量成了全局变量)spa

6、块级做用域中能声明函数,可是相似于let,不能在块级做用域外使用,块级做用域必须有大括号prototype

Const指针

一、声明一个只读的变量,一旦声明当即初始化,不能留到后边赋值rest

二、只在声明的块级做用域中生效code

三、一样存在暂时性死区

四、不能重复声明

五、存在块级做用域

六、简单数据类型来讲是值不能改变,可是对于复杂数据类型来讲是指针指向的内存地址不能改变,可是复杂数据类型的值是可变的

Es6六种声明变量的方法

let  const   function  import  class  var

顶级对象的属性及全局变量

var命令和function命令声明的全局变量,依旧是顶层对象的属性;另外一方面规定,let命令、const命令、class命令声明的全局变量,不属于顶层对象的属性。也就是说,从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩

 

 

2、变量的解构赋值

从数组和对象中提取值,对变量进行赋值,这被称为解构

1数组的解构赋值

(1) 能够从数组中提取值,按照对应位置,对变量赋值

(2) 若是解构不成功,变量的值就等于undefined

(3) 等号左边的模式,只匹配一部分的等号右边的数组。这种状况下,解构依然能够

(4) 解构赋值容许指定默认值

 

2对象的解构赋值

(1) 对象的属性没有次序,变量必须与属性同名,才能取到正确的值

(2) 对象的解构也能够指定默认值

三、字符串的解构赋值

(1) 字符串也能够解构赋值。这是由于此时,字符串被转换成了一个相似数组的对象

四、数值和布尔值的解构赋值

(1) 只要等号右边的值不是对象或数组,就先将其转为对象。因为undefinednull没法转为对象,因此对它们进行解构赋值

五、函数参数的解构赋值

(1) 参数中传入数组的话函数中会自动识别数组中的项

(2) 函数参数部分使用对象能够设置默认值

6圆括号问题

7用途

交换变量的值

从函数返回多个值

函数参数的定义:解构赋值能够方便地将一组参数与变量名对应起来。

提取 JSON 数据解构赋值对提取 JSON 对象中的数据,尤为有用。

函数参数的默认值

遍历 Map 结构

输入模块的指定方法

3、字符串的扩展

ES6 增强了对 Unicode 的支持,容许采用\uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码点

ES6 为字符串添加了遍历器接口(详见《Iterator》一章),使得字符串能够被for...of循环遍历

模板字符串:反引号标识,能够单行也能够多行,或者在字符串中嵌入变量,模板字符串中若是使用反引号要进行转义,空格和换行会被保留,若是想去除换行的话在模板字符串后边使用trim方法消除它,变量写在${}中,大括号中能够放入任意js表达式,能够进行运算,以及应用对象属性,能够调用函数。大括号中的值不是字符串将默认调用对象的toString方法。大括号中若是是字符串将原样输出。模板字符串能嵌套,

4、字符串的新增方法

String.fromCodePoint()用于从 Unicode 码点返回对应字符,可是这个方法不能识别码点大于0xFFFF的字符

String.raw()该方法返回一个斜杠都被转义(即斜杠前面再加一个斜杠)的字符串,每每用于模板字符串的处理方法

实例方法:codePointAt()

实例方法:normalize()

实例方法:includes(), startsWith(), endsWith()包含参数字符串,以参数字符串开始结尾

实例方法:repeat()返回新的字符串,将指定的字符串重复n次,参数不能为负

实例方法:padStart()padEnd()字符串不够指定长度在开头(结尾)以指定字符串不全

实例方法:trimStart()trimEnd()消除头部(尾部)的空格,不会改变原字符串

实例方法:matchAll()返回一个正则表达式在当前字符串的全部匹配

5、正则的扩展

 

6、数值的扩展

1二进制和八进制表示法:二进制和八进制数值的新的写法,分别用前缀0b(或0B)和0o(或0O)表示,若是要将0b0o前缀的字符串数值转为十进制,要使用Number方法

2Number.isFinite()检测是不是有限的,非数值的返回false,  Number.isNaN()用来检查一个值是否为NaNNumber.isFinite()对于非数值一概返回false, Number.isNaN()只有对于NaN才返回true,非NaN一概返回false

3Number.parseInt(), Number.parseFloat() 将全局方法parseInt()parseFloat(),移植到Number对象上面,行为彻底保持不变。

4Number.isInteger()用来判断一个数值是否为整数

5Number.EPSILONES6 Number对象上面,新增一个极小的常量Number.EPSILON。根据规格,它表示 1 与大于 1 的最小浮点数之间的差。

6Math.trunc方法用于去除一个数的小数部分,返回整数部分

7Math.sign方法用来判断一个数究竟是正数、负数、仍是零。对于非数值,会先将其转换为数值。

8Math.sign方法用来判断一个数究竟是正数、负数、仍是零。对于非数值,会先将其转换为数值。

9Math.clz32()方法将参数转为 32 位无符号整数的形式,而后这个 32 位值里面有多少个前导 0

10Math.imul方法返回两个数以 32 位带符号整数形式相乘的结果,返回的也是一个 32 位的带符号整数

11Math.fround方法返回一个数的32位单精度浮点数形式

12Math.hypot方法返回全部参数的平方和的平方根

13Math.expm1(x)返回 ex - 1

14Math.log1p()返回1 + x的天然对数,即Math.log(1 + x)。若是x小于-1,返回NaN

15Math.log10()返回以 10 为底的x的对数。若是x小于 0,则返回 NaN

16Math.log2(x)返回以 2 为底的x的对数。若是x小于 0,则返回 NaN

  • Math.sinh(x) 返回x的双曲正弦(hyperbolic sine
  • Math.cosh(x) 返回x的双曲余弦(hyperbolic cosine
  • Math.tanh(x) 返回x的双曲正切(hyperbolic tangent
  • Math.asinh(x) 返回x的反双曲正弦(inverse hyperbolic sine
  • Math.acosh(x) 返回x的反双曲余弦(inverse hyperbolic cosine
  • Math.atanh(x) 返回x的反双曲正切(inverse hyperbolic tangent

ES2016 新增了一个指数运算符(**

7、函数的扩展

1、函数参数的默认值、与解构赋值默认值结合使用 (通常是在尾部,否则不能省略)

2、函数的length属性是没有指定默认值的参数的个数

3rest 参数(形式为...变量名),用于获取函数的多余参数,这样就不须要使用arguments对象了

4、函数的name属性,返回该函数的函数名

5、箭头函数

数组的扩展

一、扩展运算符console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5   [a,b,...c] = [1,2,3,4,5]

① 复制数组

1) 写法一a2 = a1.concat()const a1 = [1, 2];

2) 写法二const a2 = [...a1];

3) 写法三const [...a2] = a1;

② 合并数组  [...arr1, ...arr2, ...arr3]

③ 与解构赋值结合[a, ...rest] = list,只能放在参数的最后一位

④ 字符串 字符串转数组[...'hello']// [ "h", "e", "l", "l", "o" ]

⑤ 实现了 Iterator 接口的对象能转化成数组,没有遍历器的不能转化成数组

⑥ Map Set 结构,Generator 函数

 

 

二、Array.from方法用于将两类对象转为真正的数组(dom对象)

三、Array.of()将一组值装换成数组(弥补Array()只有一个参数的缺陷)

四、数组实例的copyWithin方法,在当前数组内部,将指定位置的成员复制到其余位置

五、数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,全部数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,而后返回该成员。若是没有符合条件的成员,则返回undefinedfindindex方法返回的是对应的索引,若是都不符合返回-1(相似于indexof,可是indexof不能发现NaN)(indexOf使用的是严格的===因此无法判断NaN

六、fill方法使用给定值,填充一个数组,数组中已有的元素,会被所有抹去。fill方法还能够接受第二个和第三个参数,用于指定填充的起始位置和结束位置。(不是深拷贝对象)

七、entries()keys()values()——用于遍历数组:keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。

八、Includes()用来判断数组中是否含有某个值,返回布尔值。第二个参数是起始值,默认为0,负数为倒数,大于数组长度重置为0

九、Flat()拉平数组,flat()默认只会“拉平”一层,若是想要“拉平”多层的嵌套数组,能够将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1

十、flatMap()方法对原数组的每一个成员执行一个函数(至关于执行Array.prototype.map()),而后对返回值组成的数组执行flat()方法。该方法返回一个新数组,不改变原数组。// 至关于 [[2, 4], [3, 6], [4, 8]].flat() [2, 3, 4].flatMap((x) => [x, x * 2]) // [2, 4, 3, 6, 4, 8]

十一、数组的空位,js对数组的空位的处理很不一致,因此要避免使用空位

对象的扩展

 

对象的新增方法

 

Symbol

Symbol是第七种数据类型,表示独一无二的值,Symbol 值经过Symbol函数生成。这就是说,对象的属性名如今能够有两种类型,一种是原来就有的字符串,另外一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,能够保证不会与其余属性名产生冲突

Set 和 Map 数据结构

Set

ES6 提供了新的数据结构 Set。它相似于数组,可是成员的值都是惟一的,没有重复的值。能够用来去重。

  • add(value):添加某个值,返回 Set 结构自己。
  • delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
  • has(value):返回一个布尔值,表示该值是否为Set的成员。
  • clear():清除全部成员,没有返回值。
Map

ES6 提供了 Map 数据结构。它相似于对象,也是键值对的集合,可是的范围不限于字符串,各类类型的值(包括对象)均可以看成键。也就是说,Object 结构提供了字符串的对应,Map 结构提供了的对应

相关文章
相关标签/搜索