zoukankan      html  css  js  c++  java
  • 写一个 sum方法,在使用下面任一语法调用时,都可以正常工作

    console.log(sum(2,3));   // Outputs 5
    console.log(sum(2)(3));  // Outputs 5

    (至少)有两种方法可以做到:

    方法1:

    function sum(x) {
      if (arguments.length == 2) {
        return arguments[0] + arguments[1];
      } else {
        return function(y) { return x + y; };
      }
    }

    在JavaScript中,函数可以提供到 arguments 对象的访问,arguments 对象提供传递到函数的实际参数的访问。这使我们能够使用 length 属性来确定在运行时传递给函数的参数数量。

    如果传递两个参数,那么只需加在一起,并返回。

    否则,我们假设它被以 sum(2)(3)这样的形式调用,所以我们返回一个匿名函数,这个匿名函数合并了传递到 sum()的参数和传递给匿名函数的参数。

    方法2:

    function sum(x, y) {
      if (y !== undefined) {
        return x + y;
      } else {
        return function(y) { return x + y; };
      }
    }

    当调用一个函数的时候,JavaScript不要求参数的数目匹配函数定义中的参数数量。如果传递的参数数量大于函数定义中参数数量,那么多余参数将简单地被忽略。另一方面,如果传递的参数数量小于函数定义中的参数数量,那么缺少的参数在函数中被引用时将会给一个 undefined值。所以,在上面的例子中,简单地检查第2个参数是否未定义,就可以相应地确定函数被调用以及进行的方式。

    好记性不如烂笔头,看到自己觉得应该记录的知识点,结合自己的理解进行记录,用于以后回顾。
  • 相关阅读:
    HDU 1031 Design TShirt
    普利姆(Prime)算法
    hdu 2601 An easy problem
    克鲁斯卡尔(Kruskal)算法
    双调欧几里德旅行商问题hdu 2224 The shortest path POJ 2677Tour
    求一个数个各位相加的结果时
    C语言中各种类型的范围
    获取浏览器的scrollTop有几点小疑问
    学习,学习javascript
    各种翻页的效果! FILTER: revealTrans使用说明
  • 原文地址:https://www.cnblogs.com/wangxi01/p/7872535.html
Copyright © 2011-2022 走看看