JavaScript第四章 javascript函数

本文详细介绍了JavaScript函数的基础概念,包括函数的三种定义方式:命名函数、匿名函数及使用function构造函数。探讨了函数声明与表达式的区别,解释了如何使用return语句返回值,并介绍了arguments对象的用途。此外,还讲解了变量的作用域、闭包的概念以及函数的不同调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第四章 javascript函数

一.函数定义

javascript定义函数主要有3种方式:命名函数、匿名函数、使用function构造匿名函数

1.命名函数

<script>
    function 函数名(参数列表) {
        执行语句块!
    }
</script>

2.匿名函数

<script>
    function (参数列表) {
        执行语句块!
    }
</script>
<script>
//用花括号括起来就表示声明,注意声明函数是不会立即执行的,必须根据你的调用,用花括号的形式不需要基于函数名
    (function(name,age){
        document.write(name+':'+age);
    })('lcl',18);
</script>

3.使用function类构造匿名函数

<script>
    new Function(参数列表,函数执行体);
</script>
<script>
    var a=new Function('name','age','alert(name+age);');
    a('lcl','20');
</script>


4.函数声明与函数表达式的区别

<script>
    //我们把简单的命名一个函数就是函数的声明
    //例如:以下是声明一个test()函数
    document.write(text());
    function text() {
        return 1;
    }
    //而以下是函数表达式
    document.write(num);
    var num=function () {
        return 2;
    }
    document.write(num());
    //注意numnum()返回的区别
    //函数声明和函数表达式的区别:函数声明不在乎函数上下执行顺序
    //而函数表达式在乎
</script>

二.函数的返回值return

javascript中的函数没有声明返回类型,当函数想要返回值的时候.直接在函数后面加return语句即可,假如不添加就表明该函数没有任何的返回值。

<script>
    function count(){
        var a=3;
//       a=a++;  //3
        a=++a;  //4
        return a;
    }
    document.write(count());
    function test() {
        return 1;
    }
    alert(test());//打印1
    document.write(test());//页面输出1
    console.log(test());//控制台1
</script>

三.函数中的内置对象arguments

<script>
    //***************测试arguments
    function test(a,b) {
        console.log(arguments);
    }
    test(1,2);
    //此时点击console,就可以看到arguments
    //arguments是只看实参的一个对象,这里要注意一下,是实参,不是形参
    //arguments[0]===1   arguments[1]===>2
</script>

四.变量与函数

根据变量的定义范围不同,变量有:全局变量和局部变量。
直接定义的变量成为全局变量,在函数中定义的变量称为局部变量。局部变量只能在函数内有效,如果全局变量和局部变量使用相同的变量名,则局部变量将覆盖全局变量。
与局部变量对应的就是局部函数,局部函数是在函数中定义的,外部函数可以直接调用其内部的函数,不是外部函数不可以调用其内部函数,所以只有当外部函数被调用时,内部函数才会被执行。外部函数也不能访问其内部函数声明的内部局部变量。

//******************全局变量与局部变量
<script>
    var a=3; //全局变量
    function count() {
        var b=5;//局部变量
        window.b=5;//全局变量
        return b;
    }
    document.write(a);
    document.write(b);
</script> //返回3
//*************变量名相同,局部变量会覆盖全局变量
<script>
    var a=3; //全局变量
    function count() {
        var a=4;//局部变量
        document.write(a);
    }
    count();
</script> //返回4
//***************全局变量全局访问
<script>
    var b=3; //全局变量
    function count() {
        var a=4;//局部变量
        var c=a+b;
        document.write(c);
    }
    count();
</script> //返回7
//******************外部函数能调用其内部函数
<script>
    function count() {
        var a=4;
        function add() {
            var b=5;
            document.write(a+b);
        }
        document.write(b);
        add();
    }
    count();
</script>//返回9
闭包函数:有权访问另一个函数作用域中的变量的函数。

当函数被返回的时候,函数中的局部变量就会被释放,但闭包使得了即使被释放的局部变量也能够被访问。

<script>
    function bibao() {
        var a=3;
        function bb() {
            document.write(a);
        }
        return bb();
    }
    bibao();
</script>

五.函数调用

1.直接调用函数:对象.函数名

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

<script>
    function dev() {
        var a=2;
        a=a--;
        //document.write(a);
        return a;
    }
    //dev();
    //window.dev();
    var f=dev();
    alert(f);
</script>


2.call方法:函数.call(调用者,参数1,参数2…)

<script>
    function dev(a,b) {
        a=a+(b++);
        document.write(a+'<br>'+b);
    }
    dev.call(window,3,4);
</script>

3.apply方法:函数.apply(调用者.arguments)

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

<script>
    function dev(a,b) {
        a=a+(b++);
        document.write(a+'<br>'+b);
    }
    dev.apply(window,[2,7]);
</script>

例子:传一组数组数据,又传遍历数组的函数

<script>
    function show(arry,fun) {
        fun.call(window,arry);
        fun.apply(window,[arry]);
    }
    show([4,5,6],function (arry) {
        for(i in arry){
            document.write(i+'.');
            document.write(arry[i]+'\n');
        }
    });
</script>



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值