为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
JavaScript

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


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消