ES5 ES6

作者: 不知道取个什么昵称不如娶个媳妇 | 来源:发表于2018-09-07 11:43 被阅读17次

    ES5

    严格模式: "use strict";

    严格模式对正常的 JavaScript语义做了一些更改。

    严格模式通过抛出错误来消除了一些原有静默错误

    严格模式修复了一些导致 JavaScript引擎难以执行优化的缺陷:有时候,相同的代码,严格模式可以比非严格模式下运行得更快

    严格模式禁用了在ECMAScript的未来版本中可能会定义的一些语法。

    八进制不严格报错:

    "use strict" 结果

    变量未声明报错

    注释严格模式声明字符串 未声明变量可以使用 声明严格模式 报错

    数组尾逗号:

    -- ES5中允许在数组的末尾有一个多余的尾逗号(即最后一个逗号之后可以没有元素)

    [,,,].length = ?

    -- ES5及之后:3

    -- ES5前:4

    {

    name : value,

    key : value,

    method : function() {},

    }

    代码 结果 代码 结果

    Array 新增API 参考链接

    var array = new Array()

    array.forEach(function(currentValue, index, arr){})

    array.map(function(currentValue, index, arr){})

    ["3", "5", "7", "1"].map(parseInt)//parseInt(数值,进制)

    array.some(function(currentValue, index, arr){})

    array.every(function(currentValue, index, arr){})

    array.filter(function(currentValue, index, arr){})

    array.indexOf(elem, fromIndex)

    array.lastIndexOf(elem, fromIndex)

    array.reduce(function(sum, currentValue, index, arr){}, init)

    array.reduceRight(function(sum, currentValue, index, arr){}, init)

    Array.isArray()

    -- 判断参数是否为数组

    Array.from()

    -- ES6中,从一个类似数组或可迭代对象中创建一个新的数组实例

    String 新增API

    trim()

    -- 去掉字符串前后空白

    -- 兼容:string.replace(/^\s+|\s+$/g, "")

    代码 结果

    Date 新增API

    Date.now()

    date.toISOString()

    -- YYYY-MM-DDTHH:mm:ss.sssZ

    date.toJSON()

    -- YYYY-MM-DDTHH:mm:ss.sssZ

    代码 代码 代码 代码

    JSON(ES5新增内置对象)

    在 JSON 文本中,字符串一定要用""(双引号)包含。对象的属性名本质上是字符串,所以在 JSON 文本中表示对象时,必须使用 "" 将对象属性名包含。

    JSON.stringify()

    -- 将JS值转换为JSON文本格式的字符串

    JSON.parse()

    -- 将JSON文本转换为 JS 值

    代码

    this

    -- 指代一个对象,执行上下文环境中的当前对象

    -- 通常情况下,谁调用,指向谁

    -- 在事件函数中的 this 通常指向的是绑定事件的事件源元素

    -- 在构造函数中的 this 通常指向的是 new 所创建出来的对象本身

    Function.prototype.bind(thisArg)

    -- 返回一个新函数,该新函数体的内容和原函数内容完全一致,但当新函数被调用时,函数体中的 this 指向的是 thisArg 参数所表示的对象

    -- 事件委派:如果需要将事件处理程序中的 this 改为最初触发事件的事件源元素,则需要修改 this 指向

    代码 结果 代码 结果 代码 结果

    ES6

    内置对象新增API

    Array:

    Array.from()

    -- 将类数组对象转换为数组返回

    array.fill()

    -- 将数组元素填充指定值

    代码 代码

    String:

    startsWith()

    -- 方法用来判断当前字符串是否是以另外一个给定的子字符串“开头”的 ,是 返回true 否false

    endsWith()

    -- 方法用来判断当前字符串是否是以另外一个给定的子字符串“结尾”的 ,是 返回true 否false

    代码

    Number:

    Number.parseInt()

    Number.parseFloat()

    等等。。。。

    新增Map集合

    用于存储 key-value 键值对

    创建:new Map()

    API:

    Map.prototype.size -- 集合长度

    Map.prototype.clear() -- 清空

    Map.prototype.delete(key) -- 删除,根据 key 删除 key-value 映射

    Map.prototype.entries() -- 返回所有的 key-value 映射

    Map.prototype.forEach() -- 遍历迭代集合中每对 key-value

    Map.prototype.get(key) -- 根据 key 获取对应的 value

    Map.prototype.has(key) -- 判断集合中是否存在 key 所映射的 value

    Map.prototype.keys() -- 返回所有键的集合

    Map.prototype.set(key, value) -- 设置,向集合中保存 key-value 映射

    Map.prototype.values() -- 返回所有值的集合

    新增Set集合

    用于存储各类型的唯一值,通常我们认为 Set 集合中的元素是无序的

    创建:new Set();

    API:

    Set.prototype.size -- 长度

    Set.prototype.add() -- 添加,保存元素

    Set.prototype.clear() -- 清空

    Set.prototype.delete() -- 删除

    Set.prototype.entries() -- 集合

    Set.prototype.forEach() -- 遍历

    Set.prototype.has() -- 判断是否存在

    Set.prototype.values() -- 所有值

    for...of和for ... in两者之间差别

    for...of

    for(var i of arr)//其中i的类型是数字,值是数组的元素值

    for ... in

    for(var i in arr)// 其中i的类型是字符,值是数组的下标

    Symbol 符号

    var sym = Symbol();

    模板字符串

    `hello

    ${exp}//占位符

    world`

    块级作用域

    let 变量名 = 变量值;

    const 变量名 = 变量值; -- 定义常量

    没有声明提升

    暂存死区

    IIFE //自执行函数

    let 关键词声明的变量不具备变量提升(hoisting)特性
    let 和 const 声明只在最靠近的一个块中(花括号内)有效
    当使用常量 const 声明时,请使用大写变量,如:CAPITAL_CASING
    const在声明时必须被赋值 

    箭头函数:使用括号包裹参数,跟随一个 =>,紧接着是函数体

    是函数表达式的简写方式

    箭头函数不会绑定自己的 this、arguments、super、new.target

    箭头函数不能作为构造函数使用

    function (curr){return exp}

    简化

    (curr,) => {;return exp}//当参数为多个,函数主体语句为多条的时候

    curr =>{;return exp}//当参数为一个,函数主体语句为多条的时候

    curr => exp//当参数为一个,函数主体语句为 return exp的时候

    解构赋值:解构可以避免在对象赋值时产生中间变量

    var [a,b, ...c] = array;

    -- 将数组中第一个元素赋值给变量a, 第二个元素赋值给变量 b,剩余元素(子数组)赋值给c

    var {name, key, method} = object;

    -- 将 object.name 属性值赋值给变量 name,将 object.key 属性值赋值给变量 key,将 object.method 属性值赋值给变量 method

    ... Spread / Rest 操作符

    剩余参数     当被用于函数传参时,是一个还原操作符

    展开运算符  当被用于迭代器中时,它是一个 展开操作符

    相关文章

      网友评论

        本文标题:ES5 ES6

        本文链接:https://www.haomeiwen.com/subject/pbyqgftx.html