• ES6学习记录


    一、let 和 const 命令

    let

    1、let用来声明变量,只在自己的代码块中生效

    2、let不存在变量提升

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

    4、不允许重复声明

    5、存在块级作用域(原因:循环中的变量成了全局变量)

    6、块级作用域中能声明函数,但是类似于let,不能在块级作用域外使用,块级作用域必须有大括号

    Const

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

    2、只在声明的块级作用域中生效

    3、同样存在暂时性死区

    4、不能重复声明

    5、存在块级作用域

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

    Es6六种声明变量的方法

    let  const   function  import  class  var

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

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

    二、变量的解构赋值

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

    1数组的解构赋值

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

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

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

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

    2对象的解构赋值

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

    (2) 对象的解构也可以指定默认值

    3、字符串的解构赋值

    (1) 字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象

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

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

    5、函数参数的解构赋值

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

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

    6圆括号问题

    7用途

    交换变量的值

    从函数返回多个值

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

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

    函数参数的默认值

    遍历 Map 结构

    输入模块的指定方法

    三、字符串的扩展

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

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

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

    四、字符串的新增方法

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

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

    实例方法:codePointAt()

    实例方法:normalize()

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

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

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

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

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

    五、正则的扩展

    六、数值的扩展

    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 新增了一个指数运算符(**

    七、函数的扩展

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

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

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

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

    5、箭头函数

    数组的扩展

    1、扩展运算符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 函数

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

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

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

    5、数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefinedfindindex方法返回的是对应的索引,如果都不符合返回-1(类似于indexof,但是indexof不能发现NaN)(indexOf使用的是严格的===所以没法判断NaN

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

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

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

    9、Flat()拉平数组,flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1

    10、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]

    11、数组的空位,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 结构提供了的对应

  • 相关阅读:
    IP通信基础学习第八周
    IP通信基础学习第七周(下)
    IP通信基础学习第七周(上)
    IP通信基础学习第六周(下)
    mysql 笔记
    一个不错的MYSQL数据库备份类,PHP版,一个文件,精简版
    Linux下apache日志(按日期存放)分析与状态查看方法
    呵呵
    docker-compose常用命令
    mysql 数据备份
  • 原文地址:https://www.cnblogs.com/wyongz/p/11032387.html
Copyright © 2020-2023  润新知