继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

慕姐8265434
关注TA
已关注
手记 1309
粉丝 222
获赞 1065

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] = valuevar obj = {
  [key + key] : value
}



作者:徐金俊
链接:https://www.jianshu.com/p/2badae5d7bb6


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP