一、函数的声明方式
1、普通的函数声明
function box(num1,num2){ return num1+num2; }
2、使用变量初始化函数
var box=function(num1,num2){ return num1+num2; }
3、使用Function构造函数
var box=new Function("num1","num2","return num1+num2");
第三种不推荐,因为这种语法导致解析两次代码(第一次解析常规ECMAScript代码,第二次解析传入构造函数中的字符串)
,从而影响性能,但我们可以通过这种语法来理解,函数是对象,函数名是指针的概念
二、作为值的函数,函数可以传递函数
1、函数的返回值可以来传递
function box(sum, num) { return sum + num; } function sum(num) { return num + 10; } var result = box(sum(10), 10); //这里传递的是函数的返回值,和普通变量没区别 alert(result);//输出30
2、把函数本身作为参数来传递,而不是作为结果
function box(sum, num) { return sum(num); } function sum(num) { return num + 10; } var result = box(sum, 10) //这里sum是函数,当做参数传递到另外一个函数里,而不是返回值 alert(result); //20
三、函数内部属性
1、arguments类数组对象,包含了传入函数中所有参数,这个对象还有一个callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数
function box(num) { if (num <= 1) { console.log("if" + num); return 1; } else { console.log("else" + num); //return num * box(num - 1); return num*arguments.callee(num-1); } } console.log(box(5));//120 5*4*3*2*1
以上是一个阶乘或者是递归,box调用了自己,如果很多自我调用修改也许会麻烦,所以用到arguments.callee来调用自己
时间: 2025-01-07 01:42:06