• Item 22:使用 arguments 创建可变参数的函数


    Item 22: Use arguments to Create Variadic Functions
    Item 21 describes a variadic average function, which can process an
    arbitrary number of arguments and produce their average value. How
    can we implement a variadic function of our own? The fixed-arity ver-
    sion, averageOfArray , is easy enough to implement:
    function averageOfArray(a) {
    for (var i = 0, sum = 0, n = a.length; i < n; i++) {
    sum += a[i];
    }
    return sum / n;
    }
    averageOfArray([2, 7, 1, 8, 2, 8, 1, 8]); // 4.625
    The definition of averageOfArray defines a single formal parameter, the
    variable a in the parameter list. When consumers call averageOfArray ,
    they provide a single argument (sometimes called an actual argu-
    ment to distinguish it clearly from the formal parameter), the array of
    values.
    The variadic version is almost identical, but it does not define any
    explicit formal parameters. Instead, it makes use of the fact that
    JavaScript provides every function with an implicit local variable
    called arguments . The arguments object provides an array-like interface
    to the actual arguments: It contains indexed properties for each actual
    argument and a length property indicating how many arguments were

    provided. This makes the variable-arity average function expressible
    by looping over each element of the arguments object:
    function average() {
    for (var i = 0, sum = 0, n = arguments.length;
    i < n;
    i++) {
    sum += arguments[i];
    }
    return sum / n;
    }
    Variadic functions make for flexible interfaces; different clients can
    call them with different numbers of arguments. But by themselves,
    they also lose a bit of convenience: If consumers want to call them
    with a computed array of arguments, they have to use the apply
    method described in Item 21. A good rule of thumb is that whenever
    you provide a variable-arity function for convenience, you should also
    provide a fixed-arity version that takes an explicit array. This is usu-
    ally easy to provide, because you can typically implement the variadic
    function as a small wrapper that delegates to the fixed-arity version:
    function average() {
    return averageOfArray(arguments);
    }
    This way, consumers of your functions don’t have to resort to the
    apply method, which can be less readable and often carries a perfor-
    mance cost.
    Things to Remember
    ✦ Use the implicit arguments object to implement variable-arity
    functions.
    ✦ Consider providing additional fixed-arity versions of the variadic
    functions you provide so that your consumers don’t need to use the
    apply method.

     文章来源于:Effective+Javascript编写高质量JavaScript代码的68个有效方法 英文版

    progress every day !
  • 相关阅读:
    OCM_Session7_8_分区,并使用udev来配置裸设备
    OCM_Session7_7_VBOX配置共享存储
    OCM_Session7_6_配置oracle用户ssh对等性
    OCM_Session7_5_修改/etc/security/limits.conf和 /etc/pam.d/login和/etc/profile
    OCM_Session7_4_修改内核配置文件/etc/sysctl.conf
    OCM_Session7_3_修改 oracle 用户的初始化参数文件,建路径
    OCM_Session7_2_创建组,用户,设置用户密码
    OCM_Session7_1_配置/etc/hosts
    OCM_Session7_0_准备工作,确定hostname和ip地址
    OCM_Session7_0_CRS-0223
  • 原文地址:https://www.cnblogs.com/hghrpg/p/4604084.html
Copyright © 2020-2023  润新知