标签:
1.function语句形式;2.函数直接量的形式 3.构造函数形式前两种创建函数区别:function语句形式,JavaScript解释器直接去找并解释;
相当于js代码上来就解释function语句形式;其他的代码从上到下执行
可以理解成,第一种可以在任何位置调用;而第二种只能在定义之后调用;第三种具有顶级作用域的作用
每一个函数内部都有一个arguments对象
1.接收函数的实际参数 2.用于递归操作
//Function函数 //定义的三种方式:1.function语句形式;2.函数直接量的形式 3.构造函数形式 //前两种创建函数区别:function语句形式,JavaScript解释器直接去找并解释; //相当于js代码上来就解释function语句形式;其他的代码从上到下执行 //可以理解成,第一种可以在任何位置调用;而第二种只能在定义之后调用; //arguments对象,每一个函数内部都有一个arguments对象 //1.接收函数的实际参数 2.用于递归操作 //fun1(); //调用fun1... //fun2(); //fun2 is not a function //alert("1"+typeof fun2); //Undefined,相当于只定义,但是没有解释函数体 //1.function语句形式,一般都用这种 //可以在任何位置调用 function fun1(){ alert("调用fun1..."); }; //2.函数直接量的形式 //只能在定义之后调用 var fun2 = function(){ alert("调用fun2..."); }; //alert("2"+typeof fun2);//function //fun2(); //调用fun2... //3.构造函数形式 //作用域与前两种不同,具有顶级作用域 var fun3 = new Function("x","y","return x+y;"); //alert(fun3(10,20)); var k = 1; function test(){ var k = 2; //创建三种方式的函数 // function f(){return k;}; //返回2,返回局部的k // var f = function(){return k;}; //返回2 var f = new Function("return k;"); //返回1 alert(f()); }; //test(); //arguments对象,每一个函数内部都有一个arguments对象 //1.接收函数的实际参数 2.用于递归操作 function testarguments(x,y){ alert(arguments); //[object Arguments] alert(arguments.length);//3 alert(arguments[1]); //2 }; //testarguments(1,2,3); function testarguments1(number){ if (number<=1) { return 1; }else{ return number*arguments.callee(number-1);//调用函数本身 //为什么不用testarguments1(number-1)替换arguments.callee(number-1) } }; alert(testarguments1((5))); //120
JavaScript(二) 函数定义以及arguments使用
标签:
原文地址:http://www.cnblogs.com/wangqiang4518/p/5743170.html