标签:
javascript函数的声明和调用
将完成某一特定功能的代码集合起来,可以重复使用的代码块。
A.基本语法(function 关键字)
function 函数名([参数1],[参数2]....){
函数体
[retrun] //返回值
}
function a(){ alert(1) };
B.字面量定义的形式(匿名函数)
var 变量=function ([参数1],[参数2]....){
函数体
[retrun] //返回值
}
var a=function(){ alert(1); }
C.以对象的形式来声明(不推荐使用)
new 关键字。
var 变量=new Function([参数1],[参数2]...,"函数体");
var a=new Function(alert(1));
A.函数名() 、变量名();
function a(){ alert(1) }; a(); var a=function(){ alert(1); } a();
B.直接调用执行;
(function () { alert(1); })(); //结果 1
基本语法
function a(){ alert(1) }; //会先预编译
1.如果两个函数的命名相同,后面的将会覆盖前面的函数
function a(){alert(1)}; function a(){alert(2)}; a(); //结果 2
function a(){alert(1)}; var a=function(){alert(2)}; a(); //结果 2
var a=function(){alert(2)}; function a(){alert(1)}; a(); //结果 2
2.以基本语法声明的函数,会在代码运行的时候,提前加载到内存当中,以供以后使用,但是以字面量形式命名的函数,会在执行到的时候,才进行赋值
function a(){alert(1)}; a(); //结果 1
a(); function a(){alert(1)}; //结果 1
a(); var a=function (){alert(1)}; //结果 报错
3.在不同的<script></script>块中的函数,使用和调用的时候,应该先定义,后执行。
<script> a(); </script> <script> var a=function (){alert(1)}; </script> //结果 报错
//金字塔
function a(num){ for(var i=1;i<=num;i++){ for(var b=1;b<=num-i;b++){ document.write(‘=‘); } for(var b=1;b<=i*2-1;b++){ document.write(‘8‘); } for(var b=1;b<=num-i;b++){ document.write(‘=‘); } document.write(‘<br>‘); } }; a(9);
效果:
一、参数(可以动态的改变函数体内对应的变量的类型或值,使同一函数体得到不同的结果)
形参:在定义函数的时候,函数括号中定义的变量叫做形参:function a(形参){}
实参:调用函数的时候,在括号中传入的变量或值叫做实参:a(实参)
1.参数的类型(可以是任何的数据类型)
2.参数的个数(最多是25)
a.实参和形参数量相等,一一对应。
b.形参的数量多于实参,不会报错,但是多出的参数他的值,会自动赋值为undefined
function a(a,b){ alert(a); alert(b) }; a(1); 结果:1-------------undefined
c.实参的数量多于形参。不会报错,但是要得到多出的实参的值,要用arguments对象
function a(a){ alert(a) }; a(1,2); //结果:1
二、arguments对象(每创建一个函数,该函数就会隐式创建一个arguments对象,他包含有实际传入参数的信息)
1.length(检测实际传入参数的个数)
function a(a){ alert(arguments.length); }; a(1,2); //结果 2
2.callee(对本身的调用)
function a(a){ alert(arguments.callee); }; a(1,2); //结果 function a(a){alert(arguments.callee)}
3.访问传入参数的具体的值([下标])
function a(a){ alert(arguments[2]); }; a(1,2,3); //结果 3
三、函数重载(同一个函数因为参数的类型或数量不同,可以对应多个函数的实现,每种实现对应一个函数体)
function a(){ for(i=0;i<arguments.length;i++){ alert(arguments[i]); } }; a(1,2,3); //结果依次弹出 1、2、3
标签:
原文地址:http://www.cnblogs.com/taojiaqu/p/4930835.html