javascript - 函数

本文深入解析JavaScript函数的概念与应用,涵盖函数声明、表达式、参数处理、返回值及特殊情形,并附带实例帮助理解。

函数是什么

  • 函数就是把一些高偶合的代码给放进一个黑匣子里面,需要用到的时候就调用

函数声明

function test () {
    document.write("这个是函数声明");
}
tese();

命名函数表达式

    var test = function abc(){
    document.write("这个是命名函数表达式");
}
test();

匿名函数表达式

var test = function(){
    document.write("这是匿名函数表达式");
}
test();

命名函数和匿名函数的区别

  • 匿名函数和命名函数,除了命名函数的name = 等于命名的名字之外,和匿名函数没有任何区别。
    命名函数 test.name = 命名函数的名字
    匿名函数 test .name = test

函数参数(形参,实参)

//a,b就是形参,没有任何具体的意义,可以理解为占位。
var test = function( a,b ){
    document.write(a + b);
}
test(10,20);
//test(这里面输入的就是实参,里面的两位数就是对应a和b)

javascript 函数的特殊情况

  • 形参多实参少

    他会直接忽略形参多余的部分,你下面实参没传参数吗,那形参就等于摆设,
    在javascript中定义形参就相当于在function中var了一个变量,但是这个变量
    没有传数据。

  • 实参多形参少

    他会直接忽略多余的实参的数据,只显示实参对应的形参的数据。
    但是,他忽略了实参,没有显示在形参上面,不代表他就没有了,
    其实他是会自动存进一个叫 arguments 的类似数组却不是数组的
    实参列表里面。

    小案例1

var test = function(a,b,c,d){
        //如果形参多于实参,那么输出形参多了,否则相反
        if(test.length > arguments.length){
            console.log("形参多了");
        }else if(test.length < arguments.length){
            console.log("实参多了");
        }else{
            console.log("相等");
        }
    };
    test(1,2,3,4,5,7,8,9);

小案例2

var sum = function(){
//求多个未知数的和,数的多少不清楚
    var resuit = 0;
    for(var i = 0;i <arguments.length;i++){
    resuit += arguments[i];
}
console.log(resuit);
};
sum(10,20,30,40,50,60);

函数的映射关系

var test = function(a,b,c,d,e){
        a = 3;
        console.log(a); // 3 
        arguments[0] = 5;
        console.log(a); // 5
    };
    test(1,2,3,4,5);

虽然上面实验是会改变,但是,他改变的并不是同一个数了,是映射关系,可以比喻成两兄弟,
你做什么,我就做什么,保持高度一致,但是却是不同的一个东西。

特殊情况

 var test = function(a,b){
        //当形参有两位数,实参只有一位数的时候,改变arguments[1],还会进行映射吗
        b = 2;
        console.log(b);     //2
        console.log(arguments[1]);  //undefined
        //arguments[1],现在的arguments里面只有1,没有其他数值
    };
    test(1);

这是一种特殊情况,如果实参少于形参,多余的形参只会当做一个变量,而不会进行映射。
arguments是代表实参数列,意思就是说,你实参压根就没有这个值,所以没办法去做。
只有在形参和实参的数量都相等的情况下,才会进行映射,否则不进行。

返回值 (return)

//让在sum的参数转换为number类型
function myNum(sum){
        return Number(sum);
    }
    var num = myNum("123");
    console.log(typeof(num)+ " : " + num  );

一般写程序的时候,不会让函数再里面打印,正常情况都是用于计算,然后返回给函数本身。
return可以是结束语句,也可以说是返回语句。

function test(){
console.log("a");
return;
console.log("b");
}
test();

如果这样子写的话,那么rutern就作为结束语句来使用,只会输出“a”,而不会输出“b”;

小案例

// 把一组数翻转并且输出;
 function reverse  () {
        var num = window.prompt("请输入一组数字");
        var str = "";
        for (var i = num.length; i >= 0; i--) {
            str += num.charAt(i);
        }
        return str;
        // document.write(str);
    }
    var resuit = reverse();
    document.write(resuit);

小案例

var fun =function (sum1) {
    var resuit = 1;
    for(var i = 1;i <= sum;i++){
    resuit *= i;
    }
    console.log(resuit);
    };
    var sum;
    fun(sum = +prompt("请输入n的阶乘"));

小案例

 var fun = function (sum) {

        var a, b, resuit;
        a = 1;
        b = 1;
        if (sum > 2) {
            for (var i = 0; i < sum - 2; i++) {
                resuit = a + b;
                a = b;
                b = resuit;
                console.log(resuit);
            }
            return resuit;
        } else {
            return a;
        }
    };

    var num;
    num = fun(+prompt("请输入位数计算斐波那契数列"));
    document.write("通过运算得出的结果为 : " + num + "<br>" + "具体结果请按 F12 键进行查看");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值