博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
写一个 sum方法,在使用下面任一语法调用时,都可以正常工作
阅读量:4922 次
发布时间:2019-06-11

本文共 795 字,大约阅读时间需要 2 分钟。

console.log(sum(2,3));   // Outputs 5console.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个参数是否未定义,就可以相应地确定函数被调用以及进行的方式。

 

转载于:https://www.cnblogs.com/wangxi01/p/7872535.html

你可能感兴趣的文章
阿里代码规范检查工具的安装使用
查看>>
Jmeter学习笔记10-性能测试实践_数据库Mysql
查看>>
myeclipse python下配置文档说明_转载
查看>>
快速幂,就当个模板了
查看>>
HDU1212加深下对取模运算的理解
查看>>
SICP_3.9-3.11
查看>>
1020. Tree Traversals (25)
查看>>
emmet简单记录
查看>>
[洛谷P4092][HEOI2016/TJOI2016]树
查看>>
nginx配置比较杂乱的总结
查看>>
docker 真实---安装基本映像 (一)
查看>>
Boost.Asio c++ 网络编程翻译(26)
查看>>
Android自己定义组件系列【8】——面膜文字动画
查看>>
项目实施阶段该做好哪些方面的工作
查看>>
CFileDialog使用简单介绍
查看>>
实现全排列
查看>>
CNN中卷积过程中padding的使用
查看>>
Oracle trunc()函数,decode()函数,substr函数,GREATEST函数,java中substring函数的用法...
查看>>
Ubuntu(Linux) 下 unzip 命令使用详解
查看>>
php中使用array_slice将数组中的元素分类
查看>>