一、函数声明 1、自定义函数 function fun1(){ alert("我是自定义函数"); } fun2();//函数不调用,自己不执行 2、直接量声明 var fun2=function(){ alert("直接量声明"); } fun2(); 3、利用Function关键字声明 var fun3=new Function("var a=10;b=20;alert(a+b)"); fun3();
二、变量声明提升 如果在一个函数体内部声明了一个变量,不管这个变量函数外部有没有,先执行函数内部的变量,会将变量声明提升到函数开始部分,但是不会赋值。 在函数体内部声明变量,会把该声明提升到函数体的最顶端。但是只提升变量声明,不赋值。 var num=10; fun1(); function fun1(){ console.log(num); var num=20;//变量提升 }//undefined 相当于 var num=10; fun1(); function fun1(){ var num; console.log(num); num=20; }
三、函数传参
函数实参个数要与形参个数相同,arguments.length可以获取函数实参的个数
1 <!DOCTYPE html>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>Title</title>
6 <script>
7 /*变量提升*/
8 /*window.onload=function(){
9 var num=10;
10 fun1();
11 function fun1(){
12 console.log(num);
13 var num=20;//变量提升
14 }
15 }//结果:undefined*/
16
17 /*var a=18;
18 f1();
19 function f1(){
20 var b=9;
21 console.log(a);
22 console.log(b);
23 var a='123';
24 }//undefined,9
25 */
26 /*函数传参*/
27 /*function f1(a,b){
28 console.log(a+b);
29 }
30 f1(1,2);//3
31 f1(5);//NaN*/
32
33 /*检测函数参数个数匹配*/
34 function fn(a,b){
35 console.log(fn.length);//获取函数形参的个数
36 console.log(arguments.length);//得到的是实参的个数
37 if(fn.length==arguments.length){
38 console.log(a+b);
39 }else{
40 console.log("对不起,您的参数不匹配,正确的参数个数为:"+fn.length);
41 }
42 }
43 fn(5,3);//2,2,8
44 fn(2,3,4)//2,3,"对不起..."
45
46
47 </script>
48 </head>
49 <body>
50
51 </body>
52 </html>