Javascript学习之入门(二)

/**
*@author sinux
*@Date  2013/9/4
*@Time  9:15 am
*@Content javascript基础入门(二)
**/

//承接上篇
一.基础
0.函数,概念不多解释,直接语法:
  function functionName(arg0,arg1,```,argN){
        statements
  }
1.函数可以没有返回值,即便有也不必进行类型声明。如果无明确返回值或调用了没有参数的return语句,那么它真正返回的是undefined.
2.js函数没有重载,这是很不一样的地方。但是如果在同一作用域中同时声明多个名称相同的函数时并不报错,而总是执行最后一个。(原因猜测是其顺次读取,前面的都被覆盖了没有参与编译)
3.可以通过arguments特殊对象弥补无法重载的不足。arguments对象以结构数组的形式顺次存储传递的参数值。比如:
        function test(arg0,arg1,arg2,```,argN){
        if(arguments.length==1){
        if(argments[0]=="hello world")
         alert(arg0);
         else return;
        }
        otherStatements```
        }
4.Function类
最有意思的一点是js可以通过Function类定义函数。形如:
var functionName=new Function(arg0,arg1....,argN,function_body);
前面的参数均为形参,最后一个参数为函数体。这虽然不是太好看,但起码告诉我们函数其实也就是个引用类型。从这个角度来讲,为什么在同时定义多个函数名相同的函数时,为什么只会执行最后一个的现象就不难理解了。直观一点,举个例子:
    function fuc(){alert(0);}
    function fuc(){alert(1)}
    fuc();//输出1
    var fuc=new Function("alert(0)");
    var fuc=new Function("alert(1)");
    fuc();//输出1
    //PS:觉得这个Function类还是少用为妙,乱、慢,就当对函数理解的一个概念吧。
5.还有一点需要注意,如果需要在调试的时候获取函数的代码肿么办?既然是一个对象,那么必然有valueOf()和toString()两个方法,调用它们就成了。
6.闭包
函数可以访问其内没有定义过而在其外部环境中存在的变量,这种特点我们称之为其支持闭包。简单的来看函数操作全局变量就是一种闭包,复杂一些的闭包可以从函数的嵌套中得以体现:
var Msg="test";
function fucOutside(arg0,arg1){
    function fucInside(){
        return arg0+arg1+Msg;
    }
}
//从上面的代码可以看出支持闭包是多么强大的功能了吧,省事,高效。不过我也怕如果再复杂一些可能会有问题,不过目前没遇到过,就先这么记录吧。

posted @ 2013-09-04 10:51  sinux  阅读(342)  评论(0编辑  收藏  举报