函数的rest参数和name属性

rest参数

ES6引入rest参数(形式为 ...变量名),用于获取函数的多余参数,这样就不需要使arguments对象了,rest参数搭配的变量是一个数组,该变量将多余的参数放入数组中。

两个🌰
第一个是利用rest参数,来求和,第二个sortNumbers函数也是一样,用来排序

    function add(...values) {
        let sum = 0;
        for (const iterator of values) {
            sum += iterator;
        }
        return sum;
    }
    console.log(add(1, 2)); // 3
    console.log(add(1, 2, 3)); // 6

    const sortNumbers = (...numbers) => numbers.sort()

    console.log(sortNumbers(6, 4, 7, 1)); //[1, 4, 6, 7]

举个用rest参数改写数组push方法的例子

    function pushNumber(array, ...items) {
        items.forEach(function(item) {
            array.push(item);
        })
        return array
    }

    let a = [];
    console.log(pushNumber(a, 1, 2, 3)); //[1, 2, 3]

rest之后不可以再有其他参数,否则报错

    //报错,rest参数只能是最后面位置
    function f(a, ...b, c) {

    }

函数的length属性,不包括rest参数

    console.log(function(a) {}.length); // 1
    console.log(function(...a) {}.length); // 0
    console.log(function(c, d, ...a) {}.length); // 2

name属性

函数的name属性,返回该函数的函数名

    function foo() {}
    console.log(foo.name); // foo 

如果一个变量等于一个匿名函数。ES5和ES6的name属性返回不一样

    let f = function() {};
    //ES5
    console.log(f.name); // ""
    //ES6
    console.log(f.name); // f

Function构造函数返回的函数实例,name属性的值为anonymous

    console.log((new Function).name); // anonymous

bind返回的函数,name属性值会加上bound前缀

    function foo() {};
    console.log(foo.bind({}).name) // bound foo

    console.log((function() {}).bind({}).name) // bound
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,165评论 0 5
  • 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 上面代码检查函数l...
    陈老板_阅读 3,283评论 0 1
  • 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 上面代码检查函数l...
    呼呼哥阅读 8,943评论 0 1
  • 前面的话 函数是所有编程语言的重要组成部分,在ES6出现前,JS的函数语法一直没有太大的变化,从而遗留了很多问题,...
    CodeMT阅读 4,245评论 0 1
  • 你提笔已赏心悦目 若相恋肯定美不胜收 多年的单身 囿于我的思维 于你 纵使我有万分念想 亦不敢越雷池一步 只是那喜...
    遗落星空的猫阅读 4,589评论 51 60

友情链接更多精彩内容