专栏名称: CTOLib码库
主要分类收集GitHub上开发相关的开源库,并且每天根据相关的数据计算每个项目的流行度和活跃度
目录
相关文章推荐
上下五千年故事  ·  “十人九湿”,万病皆始于湿,试试这个小方子 ·  21 小时前  
上下五千年故事  ·  1949年,臭名昭著的汉奸被枪毙,陈毅得知后 ... ·  2 天前  
帅真商业视界  ·  被农民工堵门要债后,他主动上交护照 ·  昨天  
51好读  ›  专栏  ›  CTOLib码库

深入理解 JavaScript 中的函数

CTOLib码库  · 公众号  ·  · 2017-02-19 09:22

正文

请到「今天看啥」查看全文


{ return first + second }; var multiply = function (first, second) { return first * second }; function calculate (fun, a, b) { return fun(a, b); }

首先我已经创建了两个匿名函数。第一个返回两个数的加法运算,第二个返回两个数的乘法运算。相当简单,没有什么可值得炫耀的地方。然后,我定义函数 calculate ,这个函数接受函数作为第一个参数后跟两个参数接受两个数字。

我可以通过传递任意函数作为第一个参数来调用函数calculate。

var sum = calculate(add, 2, 3); // sum = 5var multiplication = calculate(multiply, 2, 3); // multiplication = 6

你可以看到将函数作为参数传递是多么容易。这种模式在AJAX中大量使用,当你在AJAX调用完成后,传递回调函数处理成功或失败的场景时。

关于参数的更多内容

JavaScript是非常灵活的,当涉及到传递或访问函数参数的时候。让我们看一下函数参数可以被操纵的方式。

缺少参数

调用函数时,函数的参数数量可以比要求的更少或更多。如果你调用的函数的参数比声明的少,那么缺少的参数被设置为undefined。

function callMe(a, b, c) {   console.log("c is " + typeof c);
}

callMe("Code", "Morning"); 
// Output: "c is undefined"callMe("Learn", "JavaScript", "Functions"); 
// Output: "c is string"

Arguments对象

所有的JavaScript函数有一个特殊的对象,叫做 arguments ,它是在函数调用过程中传递的参数数组。该对象可以被用来访问单个参数或获得传递到函数的参数总数。

function callMe() {   var i;   for (i = 0; i < arguments.length; i++) {      console.log(arguments[i]);
   }   console.log("Total arguments passed: " + arguments.length);
}

此函数假设没有传递任何参数,但就像我说的,你可以传递任何数量的参数到JavaScript函数。我可以像这样调用这个函数:

callMe("Code", "Morning", "Mr. Programmer");// Output":// Code// Morning// Mr. Programmer// Total arguments passed: 3

每个参数可以从 arguments 对象作为一个数组项被访问。被传递给函数的 arguments 的总数可从arguments.length属性获得。







请到「今天看啥」查看全文