神马是函数?
所谓函数,本质上是一种代码的分组形式。我们可以通过这种形式赋予某组代码一个名字,以便与之后的调用。下面,我们来示范以下函数的声明:
function sum(a, b){ var c = a + b; return c; }
一般来说,函数声明通常由一下以下几部分组成:
1. 关键词 function;
2. 函数名称,即这里的sum;
3. 函数所需的参数,即这里的a, b。一个函数通常具有0个或多个参数。参数之间用逗号分隔。
4. 函数所要执行的代码块,我们称之为函数体。
5. return子句。函数通常都有一个返回值,如果一个函数没有显式的返回值,我们就会默认他的返回值为undefined。
需要注意的是,一个函数只能有一个返回值,如果我们需要同时返回多个值,可以考虑一下把她们放进一个数组中,以数组元素的形式返回。
以上所讲的语法过程叫做函数声明。在javascript中。函数声明只是创建函数的方法之一,改天我们会介绍其她的。。。。。。。(。?_?)/~~~
累觉不爱(。?_?)/~~~(。?_?)/~~~(。?_?)/~~~(。?_?)/~~~(。?_?)/~~~(。?_?)/~~~(。?_?)/
如果我们需要使用一个函数,那就必须去调用她,那就在她后面加一个用来传递参数的小括号吧!
我们来调用一下上面的函数 ======》》》》
var her = sum(1, 2); her; //返回 3
在定义一个函数的同时,我们往往会设置这个函数所需要的调用参数。当然,也可以不给她设置参数。假如您给设定了参数,在调用的时候又忘了传递参数相关的参数值,那么,javascript引擎会自动将没有传递的参数设定为undefined。
技术角度上说参数又分为形参和实参两种。
形参是指定义函数时所用的那些参数 。如sum(a, b)中的a, b。
实参是指调用函数时所传递进来的那些参数。 如上述sum(1, 2)中的1,2。
对于那些已经传递进来的参数,javascript是来这不惧的,反正我用不到的我就无视你,自动忽略。。。。,实际上我们还可以创建一些在参数方面更为灵活的函数。那就要跪谢函数内部的arguments变量了。这个变量是函数们生下来就有的,在函数中都能调用。她能返回函数所接受的所有参数。 d=====( ̄▽ ̄*)b 是不是无比强大!!!
d=====( ̄▽ ̄*)b d=====( ̄▽ ̄*)b d=====( ̄▽ ̄*)b 洪荒之力好样的!!!
例如:
function her(){ return arguments; } her(); // 返回 []; her(1, 2, 3, true, JY); // 返回 [1, 2, 3, true, JY]
通过arguments我们接着完善sum函数;
function sum(){ var i, res=0, nums=arguments.length; for(var j=0; j<nums.length; j++){ res += nums[j]; } return res; } sum(1, 2, 3); // 6 sum(1, 1, 1); // 3 sum(); // 0
表达式arguments.length 返回的是函数被调用时所接受的参数。但是arguments实际上不是一个数组,而是一个类似于数组的对象。(当然,实际上,在函数funcArg中,调用arguments是不必要写成funcArg.arguments,直接写arguments即可)
可以验证一下arguments是不是数组
Array.prototype.testArg = "test"; function funcArg() { alert(funcArg.arguments.testArg); alert(funcArg.arguments[0]); } alert(new Array().testArg); // result: "test" funcArg(10); // result: "undefined" "10"