JavaScript函数

JavaScript函数

JavaScript函数是一个对象。

函数定义

JavaScript代码复用单位是函数,函数可以包含一段可执行代码,也可以接收调用者传入的参数。JavaScript定义函数主要有以下三种方式:

  • 命名函数

    <script text="text/javascript">
        function 函数名(参数列表){
            要执行的函数体
        }
    </script>
  • 匿名函数

    <script text="text/javascript">
        function (参数列表){
            要执行的函数体
        }
    </script>

    示例:

    <script text="text/javascript">
        /*注意F大写,是一个对象*/
        var f=function (name){
            alert("匿名函数\n你好:"+name);
        }
        f("Vinsmoke");
    </script>
  • 使用function类来构造匿名函数(函数执行体有多条,所以此方式一般少用)

    <script text="text/javascript">
        /*注意F大写,是一个对象*/
        new Function(参数列表, 函数执行体);
    </script>

经验之谈:大多数优秀的JavaScript框架都是用匿名函数语法来定义函数,它的可读性好。

函数使用示例:

<script language="javascript">
    show("Li", 21);  //命名函数调用可以放在声明之前
    function show(name, age){
        alert("名字:"+name+", 年龄:"+age);
    }

    var f=function (name, age){
        alert("名字:"+name+", 年龄:"+age);
    }
    f("Lin", 22);  //匿名函数调用不能放在函数声明之前,此时调用尚未声明

    /*里面有双引号是,外面使用单引号*/
    var e=new Function("name", "age", 'alert("名字:"+name+", 年龄:"+age);');
    //e("Li", 5); 
    window.e("Li", 5);  //成为window对象的一个属性
</script>

函数返回值

JavaScript中的函数没有声明返回类型,当函数想要返回值的时候直接加上return “值”语句即可,假如不加就代表次函数没有任何返回值。

局部变量和局部函数

局部变量:与Java相同(局部变量可以被全局变量覆盖)。

局部函数是在函数中定义的,外部函数可以直接调用其内部的函数,局部函数可以访问全局函数的变量,而全局函数不能访问局部函数的变量。

示例:

<script language="javascript">

    function f1(){
        var n=1;
        function f2(){
            alert(n);
        }
        return f2;
    }
    var f=f1();
    f();

    /*
    f1函数已经执行完毕,f2仍然可以访问n,即局部变量并没有消失,就是闭包的概念
    闭包:有权访问另一个函数作用域中变量的函数
    */
</script>

函数调用

JavaScript提供了三种函数调用方式:

  • 直接调用:此是最常见、最普通的调用方式

    对象.函数引用
    

    当声明一个函数没有指明分配给哪个对象使用的时候,默认分配给window对象。

  • 以call方法调用函数

    函数引用.call(调用者, 参数1,参数2……)
    
  • 以apply方法调用函数

    函数引用.call(调用者, arguments)
    

    arguments相当于数组,用来存放多个参数,和call方法类似。

示例:

<script language="javascript">
    function show(name, age){
        alert("你好:"+name+", 年龄:"+age);
    }
    //window.show("张三", 25);
    //show.call(window, "张三", 25);
    show.apply(window, ["张三", 25]);

    function display(arr, func){
        func.call(window, arr);
    }
    display([1,2,3,4], function(arr){
        for(i in arr)
            document.write(arr[i]+"<br />");
    })
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值