前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES6之Function

ES6之Function

作者头像
19组清风
发布2021-11-15 15:04:30
2780
发布2021-11-15 15:04:30
举报
文章被收录于专栏:Web Front EndWeb Front End
  1. 默认参数,默认参数也可以结合解构赋值在进行默认值处理。(undefined or null 走默认参数)
    1. function.length:返回第一个默认参数前的形参个数。
    2. Rest参数:如果...在等号左边或者放在形参上,那么就是rest参数。如果...在等号右边或者放在实参上,那么就是扩展运算符。
    3. 扩展运算符。
    4. name属性:返回函数名称。匿名函数返回anonymous,bind绑定函数返回name多了一个关键字 bound xxx。
    5. 箭头函数。
      1. 箭头函数中this指向定义时所在的对象,而不是调用时所在的对象。
      2. 箭头函数不可以当作构造函数。
      3. 箭头函数不可以使用arguments对象。
代码语言:javascript
复制
// 默认参数
function foo(x, y = 'world') {
    // undefined or null 才会走默认参数
    console.log(x, y)
}
foo('hello', 0)
// 注意这段代码,先进行了默认参数,然后对于默认参数又进行了一次解构赋值
function ajax(url, {
    body = '',
    method = 'GET',
    headers = {}
} = {}) {
    console.log(method)
}

ajax('http://www.imooc.com', {
    method: 'POST'
})


// function length 返回第一个默认参数前的形参个数
function foo(a, b = 1, c) {
    console.log(foo.length)
}
foo('a', 'b') // 1
function foo(a = 2, b = 1, c) {
    console.log(foo.length)
}
foo('a', 'b') // 0



// Rest参数 Rest为数组
function sum(...nums) {
    let num = 0
    nums.forEach(function (item) {
        num += item * 1
    })
    return num
}
console.log(sum(1, 2, 3)) // 6
console.log(sum(1, 2, 3, 4)) // 10
function sum(base, ...nums) {
    let num = base
    nums.forEach(function (item) {
        num += item * 1
    })
    return num
}
console.log(sum(30, 1, 2, 3)) // 36
console.log(sum(30, 1, 2, 3, 4)) // 40

// Spread Operator 和 Rest Parameter 是形似但相反意义的操作符, 简单的来说 Rest Parameter 是把不定的参数“ 收敛” 到数组, 而 Spread Operator 是把固定的数组内容“ 打散” 到对应的参数。 示例如下:

function sum(x = 1, y = 2, z = 3) {
    return x + y + z
}

console.log(sum(...[4])) // 9
console.log(sum(...[4, 5])) // 12
console.log(sum(...[4, 5, 6])) // 15

// 函数的name属性
function foo() {}
foo.name // foo

(new Funciton()).name // anonymous


function foo() {
    this.a = '6'
}
foo.bind({}).name // 多了一个关键字 bound foo

function () {}.bind({}).name // bound

// 箭头函数就不做演示了 太常规了吧
复制代码
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年09月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档