代码改变世界

JavaScript函数学习要点总结(一)

2013-10-22 18:32  盛世游侠  阅读(310)  评论(0编辑  收藏  举报

1、函数的最大作用是提供代码复用;

2、JavaScript函数是弱类型语言,定义函数时既不要声明函数的返回值,也不要声明函数的参数列表类型;

语法如下:

1 function functionName(parameter-list){
2   statements; 
3 }

3、函数可以有返回值,也可以无返回值。函数运行过程中遇到一条return语句即返回返回值,函数结束;

1 function hello(){
2     return 6;
3 }
4 
5 alert(hello());//输出6;

4、局部函数:在函数A内定义一个函数B,则B为局部函数,局部函数B只能在函数A内调用有效,无法在函数A之外调用,如果在函数A之外调用,将会报未定义错误;

 1 function A(){
 2    //定义局部函数B1;
 3    function B1(){
 4       document.write("局部函数inner1");
 5    }    
 6    //定义局部函数B2;
 7    function B2(){
 8       document.write("局部函数inner2");
 9    }      
10    
11    //调用局部函数;
12    B1();//输出"局部函数inner1";
13    B2();//输出"局部函数inner2";  
14 };
15 //调用全局函数;
16 A();
17 //在函数A外部调用局部函数B1;
18 B1();//在firefox的firebug下的控制台中可以看到错误提示“B1 is not defiend”;

5、JavaScript允许传递空参数给函数,但是却不允许使用未定义的变量或函数;传递空参数给函数,虽然会得到undefined值,但是浏览器不会报错;但如果使用未定义的变量或函数,浏览器会报未定义错误;

6、如果将一个对象的某个实例方法用“对象名.方法名()”的形式当作函数调用,则既不会得到undefined值,也不会报未定义错误,而是会报“XX  is not a function”错误;

7、匿名函数的创建方式:

方式一:使用new关键字加Function对象创建;

var f = new Function('name','document.write(name)');
//Function对象构造器的参数可以不受限制。
//Function可以接受一系列的字符串参数,其中最后一个参数是函数的执行体;执行体的各语句以分号隔开;

方式二:直接创建;

var f = function(name){document.write(name)};
f('yeeku');

8、可以将一个函数赋给一个普通变量,将一个函数abc赋给一个普通变量f后,通过f()即可调用abc函数,而abc()将失去作用,无法调用,如果调用,将报abc未定义错误;但是在IE中的IE8以下版本的浏览器中却不一样,在IE8以下的浏览器中将一个函数赋给一个普通变量后,将会得到两个一样的函数,两个都可以调用;

var f = function abc(name){
      document.write(name);
}
f('yeku');//输出yeku;
abc('yeku');//在firefox中报未定义错误,在IE中输出yeku;

9、函数的局部变量、实例属性和静态属性;

局部变量:在函数中以普通方式声明的变量,包括以var或不加任何前缀声明的变量;

局部变量只能在函数内调用,在函数外调用将会报未定义错误;

实例属性:在函数中以this前缀修饰的变量;实例属性是属于单个对象的,只有对象才可以调用,类如果调用实例属性将会出现未定义错误;

静态属性:在函数中以函数名为前缀修饰的变量;

静态属性是属于类的,只有类才可以调用,对象如果调用静态属性将会出现未定义错误;