zoukankan      html  css  js  c++  java
  • ES6--不定参数

      <一>,在讨论ES6的不定参数之前,我们先一起回顾一下ECMAScript5的无名参数。

      早先,javascript提供arguments对象检查函数的所有参数,从而不必定义每一个要用的参数。尽管arguments象检查在大多数情况下运行良好,但是实际使用起来却有些笨重。

    function pink(o) {
        let result = Object.create(null);
        // 从第二个参数开始
        for (let i = 1; i < arguments.length; i++){
            result[arguments[i]] = o[arguments[i]];
        }
        return result;
    }
    let book = {
        title:"武汉",
        author:"yyy"
    };
    let books = pink(book,'author','age');
    console.log(books);
    
    //打印结果
    { author: 'yyy', age: undefined }

      这个函数要注意的事项: 

      1. 并不容易发现这个函数可以接受任意数量的参数,当然,可以定义更多的参数;

      2. 因为第一个参数为命名参数且已被使用,当要查找需要拷贝的属性名称时,不得不从索引1开始而不是从索引0开始。

      <二> ES6不定参数来解决以上缺陷

      用法: 在函数的命名参数前面添加三个(...)就表明是一个不定参数,该参数为一个数组,包含着自它之后传入的所有参数,通过这个数组名即可逐一g访问里面的参数。举个例子,使用不定参数重写pink()方法。

    function pink(o,...keys) {
        let result = Object.create(null);
    
        for(let i = 0; i < keys.length; i++){
            result[keys[i]] = o[keys[i]];
        }
        return result;
    }
    
    let book = {
        title:"武汉",
        author:"yyy"
    };
    let books = pink(book,'author','age','name');
    
    console.log(books);
    // 打印结果
    { author: 'yyy', age: undefined, name: undefined }

      备注不定参数的使用限制:

      1. 每个函数最多只能有一个不定参数而且一定要放在所有参数的末尾

    错误用法

    function pink(o,...keys,last) {
        // 函数体
    }

      2. 不定参数不能用于对象字面量setter之中

    错误用法

    function pink(o,...keys) {
        // 函数体
        set name(...value){
            
        }
    }

       3. 不定参数对argements对象的影响

    如果声明函数时定义了不定参数,则在函数被调用时,arguments对象包含了所有传入函数的参数。例如:

    function chenkArgs(...args) {
        console.log(args.length); // 2
        console.log(arguments); // { '0': 'a', '1': 'wuhan' }
        console.log(args[0], arguments[0]);  // a a
        console.log(args[1], arguments[1]); // wuhan wuhan
    }
    chenkArgs('a','wuhan');
  • 相关阅读:
    C程序的存储空间布局
    获取系统数据文件信息
    基于UDP的一对回射客户/服务器程序
    一段经典的 Java 风格程序 ( 类,包 )
    Vue 脱坑记
    vue面试题总汇
    JavaScript调试技巧
    伪元素小技巧
    JavaScript 开发人员需要知道的简写技巧
    select2插件改造之设置自定义选项 源码
  • 原文地址:https://www.cnblogs.com/yyy6/p/8296164.html
Copyright © 2011-2022 走看看