js学习笔记基础分享--函数篇

函数篇

引入函数这个概念

问题:还记得累加和怎么写吗?

        var sum = 0;
        for (var i = 1; i <= 50; i++) {
            sum = sum + i;
        }
        console.log(sum);

思考:那要算10-50累加和呢?1-1000呢?是不是要重新写一遍代码?

分析:为了使程序简洁,我们使用函数,也就是封装了一段可以重复执行调用的代码块

//定义累加和函数
        function getSum(num1, num2) {
            var sum = 0;
            for (var i = num1; i <= num2; i++) {
                sum += i;
            }
            console.log(sum);
        }
//调用累加和函数
        getSum(1, 100);//5050
        getSum(1, 50);//1275
        getSum(1, 1000);//500500

过程分析:

function 函数名(形参1,形参2...){

            //函数体

        }

        函数名(实参1,实参2...)

        //执行过程:调用函数getSum(1, 100);的时候,将1,100分别传给num1,num2

 

了解实参和形参

参数说明
形参形式上的参数,函数定义的时候传递的参数,当前并不知道是什么
实参实际上的参数,函数调用的时候传递的参数,实参是传递给形参的

作用:在函数内部某些值尚不能被固定时,可用参数在调用函数的时候将不同值传进去

注意:

(1)多个参数用逗号隔开

(2)形参可看作是不用声明的变量

(3)形参实参匹配问题

//形参实参匹配问题
        function getSum(num1, num2) {
            console.log(num1 + num2);
        }
        //如果实参形参个数一致,则正常输出
        getSum(1, 2); //3
        //如果实参多于形参个数,则会取到形参的个数
        getSum(1, 2, 3); //3
        //如果实参少于形参个数,多余的形参被定义为undefined,最终输出NaN
        //上文提到:形参可看作是不用声明的变量,此时num2是一个变量但还未被赋值,结果就是undefined
        getSum(1); //NaN
        //建议:尽量参数个数相匹配

函数的返回值

        //1,return 终止函数
        function getSum(num1, num2) {
            return num1 + num2; //后面代码不会执行
            alert("我是不会被执行的!")
        }
        console.log(getSum(1, 2)); //3
        //2,return 只能返回一个值
        function fn(num1, num2) {
            return num1, num2; //返回的结果是最后一个值
        }
        console.log(fn(1, 2)); //2
        //3.求任意两数加减乘除
        function getResult(num1, num2) {
            return [num1 + num2, num1 - num2, num1 * num2, num1 / num2];
        }
        var re = getResult(1, 2); //返回一个数组,后面会提到为什么要用变量
        console.log(re); //Array(4) [ 3, -1, 2, 0.5 ]
        //4,函数如果有return,则返回return后面的值;如果无则返回undefined
        function fn1() {
            return 666;
        }
        console.log(fn1()); //666

        function fn2() {

        }
        console.log(fn2()); //undefined

注:

break,continue,return的区别

break:结束当前循环体

continue:跳出本次循环,继续执行以下循环

return:不仅可退出循环,还能够返回return语句中的值,同时还可以结束当前函数体内的代码

 

案例:用函数求两数最大值

//用函数求两数最大值
        function getMax(num1, num2) {
            return num1 > num2 ? num1 : num2;
        }
        console.log(getMax(1, 2));
        console.log(getMax(11000, 100));

案例:用函数求数组最大值

//案例:用函数求数组最大值
        function getArrMax(arr) {
            var max = arr[0];
            for (var i = 1; i <= arr.length; i++) {
                if (arr[i] > max) {
                    max = arr[i];
                }
            }
            return max;
        }
        var re = getArrMax([3, 5, 19, 18, 24, 35, 66, 99]);
        console.log(re);//99

作业1:写一个函数,用户输入任意两个数字的任意算术运算,并弹出计算的结果;

//作业1:写一个函数,用户输入任意两个数字的任意算术运算,并弹出计算的结果;
        function getResult() {
            var result;
            var num1 = prompt("请输入第一个数:");
            var num2 = prompt("请输入第二个数:");
            var operator = prompt("请输入你想要的运算符:")
            switch (operator) {
                case "+":
                    result = parseInt(num1) + parseInt(num2);//接受的是字符型
                    break;
                case "-":
                    result = num1 - num2;
                    break;
                case "*":
                    result = num1 * num2;
                    break;
                case "/":
                    result = num1 / num2;
                    break;
                default:
                    break;
            }
            alert("计算结果是:" + num1 + operator + num2 + "=" + result);
        }
        getResult();//不要忘了调用函数

作业2:写一个函数,用户输入任意两个数字的最大值,并能弹出运算后的结果;

//作业2:写一个函数,用户输入任意两个数字的最大值,并能弹出运算后的结果;
        function getMax() {
            var max;
            var num1 = parseInt(prompt("请输入第一个数:"));
            var num2 = parseInt(prompt("请输入第二个数:"));
            if (num1 > num2) {
                max = num1;
            } else {
                max = num2;
            }
            alert("最大值:" + max);
        }
        getMax();
        function getMax() {
            var num1 = parseInt(prompt("请输入第一个数:"));
            var num2 = parseInt(prompt("请输入第二个数:"));
            var max = num1 > num2 ? num1 : num2;//max一定要放num后面定义,不然就是undefined
            alert("最大值:" + max);//前面不要return,不然后面的句子输出不了
        }
        getMax();

作业3:写一个函数,用户输入任意3个不同数字的最大值,并能弹出运算后的结果;

//写一个函数,用户输入任意3个不同数字的最大值,并能弹出运算后的结果;
        function getMax() {
            var max;
            var a = parseInt(prompt("请输入第一个数:"));
            var b = parseInt(prompt("请输入第二个数:"));
            var c = parseInt(prompt("请输入第三个数:"));
            if (a >= b && a >= c) {
                max = a;
            } else if (b >= a && b >= c) {
                max = b;
            } else {
                max = c;
            }
            alert("最大值是:" + max);
        }
        getMax();
        function getMax() {
            var a = parseInt(prompt("请输入第一个数:"));
            var b = parseInt(prompt("请输入第二个数:"));
            var c = parseInt(prompt("请输入第三个数:"));
            var arr = [a, b, c];
            var max = arr[0];
            for (var i = 1; i <= arr.length; i++) {
                if (arr[i] > max) {
                    max = arr[i];
                }
            }
            alert("最大值是:" + max);
        }
        getMax();

作业4:写一个函数,用户输入一个数判断是否为素数,并弹出返回值。

//2~m-1没有整除数
        function getPrime() {
            var num = parseInt(prompt("请输入一个数字:"));
            if (num == 0) {
                return 0;
            } else if (num == 1) {
                return 0;
            } else {
                for (var i = 2; i < num; i++) {
                    if (num % i == 0) {
                        return 0;
                    }
                }
            }
            return 1;
        }
        console.log(getPrime());

 

关于素数这一方面我也了解不深,其他优化算法方式可以去其他地方查查,以上方法太慢,后续加深理解会更新

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值