美文网首页饥人谷技术博客
ES6入门用法&函数与对象的语法糖

ES6入门用法&函数与对象的语法糖

作者: 小7丁 | 来源:发表于2018-09-09 10:24 被阅读3次

    1. 函数默认参数

    如果有下面这个函数

    function sum(a, b) {
      return a+b
    }
    sum(1)
    

    输出的是什么呢?

    • 答案是NAN,因为b是undefined,1+undefined就是NAN

    如何解决这个问题?

    - ES6之前可以这么解决:

    function sum(a, b) {
      a = a || 0
      b = b || 0
      return a+b
    }
    sum(1)
    

    这样就将a和b都设置了一个默认值0

    - 有了ES6后可以这么解决:

    function sum(a=0, b=0) {
      return a+b
    }
    sum(1)
    

    2. 剩余参数

    如果要执行一个多个参数求和的函数,但是不知道参数多少个,在ES6之前是这么写的:

    function sum (message) {
      let result = 0
      for(let i=1; i<arguments.length; i++) {
        result += arguments[i]
      }
      return message + result
    }
    sum('结果是:', 1,2,3,4,5,6,7,8,9)
    

    ES6之后可以如下写:

    function sum (message, ...number) {
      result = number.reduce((p, v) => p+v, 0)
      return message + result
    }
    sum('结果是:', 1,2,3,4,5,6,7,8,9)
    

    如何将伪数组变成真数组

    在ES5最方便的方法是

    let args = Array.prototype.slice.call(arguments)
    

    ES6可以这么做

    let args = Array.from(arguments)
    

    更方便的方法是

    let args = [...arguments]
    

    3. 对象深浅拷贝

    浅拷贝:

    1. Object.assign({}, objA)
    let objA = {
      name: {
        x: 'a'
      }
    }
    let objB = Object.assign({}, objA)
    
    let objA = {
      name: {
        x: 'a'
      }
    }
    let objB = {...objA}
    

    深拷贝

    • JSON.parse(JSON.stringify(data))

    条件:

    1. 没有复杂对象:如日期对象,正则对象,没有函数,没有循环引用,没有所有普通对象之外的对象
    2. 没有undefined
    • 递归

    动态的key值可以用中括号括起来

    var key = 'x'
    var value  = 'y'
    
    var obj = {}
    obj[key] = value
    
    var obj = {
      [key + key] : value
    }
    

    相关文章

      网友评论

        本文标题:ES6入门用法&函数与对象的语法糖

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