• 关于ES6的重点罗列(阮一峰ES6笔记总结)


    变量

    ES5只有两种声明变量的方法:varfunction命令;ES6中有六种:除了ES5的两种加上letconst还有importclass命令。

    新增let
    • 用于声明变量
    • 块级作用域
    • 不存在变量提升
    • 暂时性死区
    • 同一作用于内,不允许重复声明
    新增const
    • 声明只读常量
    • 必须在初始化的时候赋值
    • 块级作用域
    • 没有变量提升,存在暂时性死区
    • 生命的常量不可重复声明
    • 对于符合类型的前两;变量名只是保证指向地址不变

    变量解构赋值

    • 模式匹配
    • 不完全解构
    • var、let、const声明的变量都适用
    • 允许指定默认值
    • 解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量(真正被赋值的是后者)
    • 解构赋值的变量都会重新声明;let和const中应该注意
    • 解构可以用于嵌套结构的对象
    • 字符串也可以解构赋值
    • 数值和布尔值的解构赋值
    • 解构赋值的规则是,只要等号右边的值不是对象,就先将其转为对象

    字符串

    字符串可以被for...of循环遍历
    includes(), startsWith(), endsWith()
    • includes():返回布尔值,表示是否找到了参数字符串。
    • startsWith():返回布尔值,表示参数字符串是否在源字符串的头部。
    • endsWith():返回布尔值,表示参数字符串是否在源字符串的尾部。
    • 三个方法都支持第二个参数,表示开始搜索的位置
    repeat()
    • 返回一个新字符串,表示将原字符串重复n次
    • 参数如果是小数,会被取整
    • 参数是负数或者Infinity,会报错(参数是0到-1之间的小数,则等同于0;先取整)
    padStart(),padEnd()
    • 字符串补全
    模板字符串
    • 用反引号(`)标识
    • 模板字符串中嵌入变量,需要将变量名写在${}之中
    • 模板字符串之中能调用函数
    • 模板字符串能嵌套

    数值

    Number.isFinite(), Number.isNaN()
    • Number.isFinite()判断是否为小数
    • Number.isNaN()片段是否为空
    • 只对数值有用;非数值都返回false
    Number.isInteger()
    • 判断是否为整数
    安全整数和Number.isSafeInteger()
    • JavaScript能够准确表示的整数范围在-253到253之间(不含两个端点),超过范围,无法精确表示
    • Number.MAX_SAFE_INTEGER和Number.MIN_SAFE_INTEGER两个常量,来表示这个范围的上下限

    数组

    Array.from()
    • 将类数组对象转化成正真的数组
    // ES5的写法
    var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c']
    
    // ES6的写法
    let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
    
    • Array.from可以接受第二个参数。作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组。
    Array.of()
    • Array.of方法用于将一组值,转换为数组
    • 弥补数组构造函数Array()的不足,参数个数的不同,会导致Array()的行为有差异
    //只有当参数个数不少于2个时,Array()才会返回由参数组成的新数组
    Array() // []
    Array(3) // [, , ,]
    Array(3, 11, 8) // [3, 11, 8]
    
    Array.of() // []
    Array.of(undefined) // [undefined]
    Array.of(1) // [1]
    Array.of(1, 2) // [1, 2]
    
    copyWithin()
    • 将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组
      Array.prototype.copyWithin(target, start = 0, end = this.length)
    find()和findIndex()
    • 用于找出第一个符合条件的数组成员,它的参数是一个回调函数
    • 回调函数可以接受三个参数,依次为当前的值、当前的位置和原数组
    fill()
    • 使用给定值,填充一个数组
    • fill方法还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置
    entries(),keys()和values()
    • 用于遍历数组,它们都返回一个遍历器
    • keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历
    includes()
    • Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似
    数组的空位
    • ES6则是明确将数组空位转为undefined

    函数

    函数参数的默认值
    • 与解构赋值默认值结合使用
    • 非尾部的参数设置默认值,实际上这个参数是没法省略的;可写作undefined
    函数的length属性
    • 回没有指定默认值的参数个数
    函数参数的作用域
    • 参数默认值是一个变量,则该变量所处的作用域,与其他变量的作用域规则是一样的,即先是当前函数的作用域,然后才是全局作用域
    rest参数
    • 用于获取函数的多余参数
    扩展运算符
    • 扩展运算符(spread)是三个点(…)
    • 合并数组[1, 2, ...more]
    • 与解构赋值结合
    • 函数的返回值
    • 字符串转化成数组[...'hello'] [ "h", "e", "l", "l", "o" ]
    • 实现了Iterator接口的对象
    name属性
    • 函数的name属性,返回该函数的函数名
    • Function构造函数返回的函数实例,name属性的值为“anonymous
    箭头函数
    • 使用“箭头”(=>)定义函数
    • 函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象
    • 不可以当作构造函数,也就是说,不可以使用new命令
    • 不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替
    • 不可以使用yield命令,因此箭头函数不能用作Generator函数
    • this对象的指向是可变的,但是在箭头函数中,它是固定的
    尾调用优化
    • 尾调用是指某个函数的最后一步是调用另一个函数
    • 尾调用不一定出现在函数尾部,只要是最后一步操作即可
    尾递归
    • 函数调用自身,称为递归。如果尾调用自身,就称为尾递归

    非常建议对阮一峰老师的ES6入门进行阅读;会有跟进一步对ES6的新特性的理解。

  • 相关阅读:
    linux下/proc/sysrq-trigger文件的功能
    Windows下bat命令
    转——802.11协议
    转 ——eclipse下进行Python开发 环境配置
    U盘装centos7系统过程
    django框架介绍
    2-事件之间关系(概率论与数理统计学记笔记)
    1-基本概念(概率论与数理统计学习笔记)
    舆情正负面判断

  • 原文地址:https://www.cnblogs.com/smileyqp/p/12675287.html
Copyright © 2020-2023  润新知