最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 函数的基本语法

    正文概述 掘金(三老阿姨)   2020-12-29   567

    函数语法

    重复代码:让程序难以维护

    函数主要用于减少重复代码

    创建(定义、声明)函数

    function 函数名 () {
        //函数体
    }
    

    函数体的代码不会直接运行,必须要手动调用函数,才能运行其中的代码。

    调用函数

    运行函数体

    函数名();
    
     <script>
        //创建函数
        function printSplitor () {
            console.log("=======================");
        }
        //调用函数
        printSplitor();
    </script>
    

    函数提升

    通过字面量声明的函数,会提升到脚本块的顶部。

    通过字面量声明的函数,会成为全局对象的属性。 window的属性

     <script>
    

    其他特点

    通过typeof 函数名,得到的结果是"function"

    函数内部声明的变量:

    1. 如果不使用var声明,和全局变量一致,表示给全局对象添加属性
    <script>
        function test () {
            a = 3;
        }
        test();
        console.log(a);   //3
    </script>
    
    1. 如果使用var声明,变量提升到所在函数的顶部,函数外部不可以使用该变量
    <script>
        function test() {
            console.log(a)   //undefined
            var a = 3;    //相当于var a; a = 3;
        }
        test();
    </script>
    

    函数中声明的变量,仅能在函数中使用,在外部无效

    <script>
        function test2 () {
            var a = 3;
            a--;
        }
        var a = 5;
        test2();
        console.log(a);   //5
    </script>
    

    参数

    参数表示函数运行的未知条件,需要调用者告知的数据

    //参数的有效返回在函数体中
    function 函数名(参数1, 参数2, ...) {
        
    }
    
    函数名(实参)
    
    

    如果实参没有传递,则对应的形参为undefined

    <script>
        //输出一个数是否是奇数
        function isOdd(n) {
            if (n % 2 === 0) {
                console.log(n + "不是奇数");
            } else {
                console.log(n + "是奇数");
            }
        }
        var nums = [234, 3, 4];
        for (var i = 0; i < nums.length; i++) {
            isOdd(nums[i]);   //234不是奇数 3是奇数 4不是奇数
        }
        isOdd(5);   //5是奇数
        isOdd(122); //122不是奇数
        isOdd();    //undefined是奇数
    
        //输出两个数相加的结果
        function sum (a, b) {
            console.log(`${a}+${b} = ${a+b}`);
        }
        sum(3, 5);  //3+5=8;
        sum(234, 234, 34242, 22323);   //234+234=468;
        sum(123);     //123+undefined=NaN;
    
        //对一个数组求和
        function sumOfArray(arr) {
            var sum = 0;
            for (var i = 0; i < arr.length; i++) {
                sum += arr[i];
            }
            console.log("和为:" + sum);
        }
        sumOfArray([2, 3, 4, 5, 6]); // 和为:20
    
        //删除数组末尾的指定数量的数据
        function deleteArray (arr, number) {
            arr.splice(-number, number);
        }
        var nums = [1, 2, 3, 4, 5];
        deleteArray(nums, 3);
        console.log(nums);   //[1, 2]
    </script>
    

    返回值

    函数运行后,得到的结果,调用函数时,调用表达式的值就是函数的返回值

    <script>
        function isOdd(n) {
            if (n % 2 === 0) {
                return false;   //返回false
            } else {
                return true;   //返回true
            }
        }
    
        var nums = [234, 34, 56, 345, 455, 777];
        //输出数组中所有的奇数
        var sum = 0;
        for (var i = 0; i < nums.length; i++) {
            if (isOdd(nums[i])) {
                sum += nums[i];
            }
        }
        console.log(sum);   //1577
    </script>
    

    return 会直接结束整个函数的运行

    return 后面如果不跟任何数据,返回undefined

    如果函数中没有书写return, 则该函数会在末尾自动return undefined。

     <script>
        //对一个数组求和
        function sumOfArray(arr) {
            var sum = 0;
            for (var i = 0; i < arr.length; i++) {
                sum += arr[i];
            }
            return sum;
        }
        var num1 = [233, 455, 34, 33, 546];
        var num2 = [3434, 3545, 55, 66, 77];
        console.log(sumOfArray(num1) + sumOfArray(num2));   //8478
    
        //判断一个数是不是素数
        function isPrime(n) {
            if (n < 2) {
                return false;
            }
            for (var i = 2; i < n - 1; i++) {
                if (n % i === 0) {
                    return false
                }
            }
            return true;
        }
        var nums = [32, 65, 67, 45, 3, 4, 55, 9];
        var sum = 0;
        for (var i = 0; i < nums.length; i++) {
            if (isPrime(nums[i])) {
                sum += nums[i];
            }
        }
        console.log(sum);   //70
    </script>
    

    文档注释

    /**
     *
     *
    */
    
     /**
        * nums:一个数字的数组
    */
    var nums = [23, 56, 7, 4, 5, 6];
    
    /**
    * 两个数求和
    * @param {number} a 第一个
    * @param {number} b 第二个
    */ 
    function sum(a, b) {
        return a + b;
    }
    sum (1, 3)
    

    通用函数编写

    新建一个js文件,编写以下函数

    1. 写一个函数,该函数用于判断某个数是不是奇数

    函数名参考: isOdd

    /**
     * 判断一个数是不是奇数
     * @param {number} n 要判断的数字
     * @param {boolean}
     */
    function isOdd(n) {
        // if (n % 2 !== 0) {
        //     return true;
        // } else {
        //     return false;
        // }
        return n % 2 !== 0;
    }
    console.log(isOdd(3));   // true
    
    
    1. 写一个函数,该函数用于判断某个数是不是素数

    函数名参考:isPrime

    
    /**
     * 判断一个数是不是素数
     * @param {*} n
     */
    function isPrime(n) {
        if (n < 2) {
            return false;
        }
        for (var i = 2; i < n; i++) {
            if (n % i === 0) {
                return false;
            }
        }
        return true;
    }
    console.log(isPrime(2));  //true
    console.log(isPrime(10)); //false
    
    1. 写一个函数,该函数用于对数组求和

    函数名参考:sumOfArray

    /**
     * 对数组进行求和
     * @param {*} arr 
     */
    function sumOfArray (arr) {
        var sum = 0;
        for (var i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }
    console.log(sumOfArray([1, 2, 3, 4, 5, 6]));    //21
    console.log(sumOfArray([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])); //55
    
    1. 写一个函数,该函数用于得到数组中最大的值

    函数名参考: maxOfArray

    /**
     *  得到数组中最大的值
     * @param {*} arr 
     */
    function maxOfArray(arr) {
        if (arr.length === 0) {
            return;
        }
        var max = arr[0];
        for (var i = 0; i < arr.length;  i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        return max;
    }
    console.log(maxOfArray([2, 3, 4, 5,444]));   //444
    
    1. 写一个函数,该函数用于得到数组中的最小值

    函数名参考:minOfArray

    /**
     * 得到数组中最小的值
     * @param {*} arr 
     */
    function minOfArray(arr) {
        if (arr.length === 0) {
            return;
        }
        var min = arr[0];
        for(var i = 0; i < arr.length; i++) {
            if (arr[i] < min) {
                min = arr[i];
            }
        }
        return min;
    }
    console.log(minOfArray([2, 3, 4, 5,444]));   //1
    
    1. 写一个函数,该函数用于判断数组是否是稀松数组

    函数名参考:hasEmptyInArray

    /**
     * 判断一个数组是不是稀松数组
     * @param {*} arr 
     */
    function hasEmptyInArray(arr) {
        //稀松数组特点:下标连续
        for (var i = 0; i < arr.length; i++) {
            if (!(i in arr)) {
                return true;
            }
        }
        return false;
    }
    console.log(hasEmptyInArray(new Array(3)));   //true
    
    1. 写一个函数,判断该年是否是闰年

    函数名参考: isLeap

    /**
     * 判断该年是否是闰年
     * @param {*} year 
     */
    function isLeap (year) {
        //4年一润,百年不润,400年一润
        // if (year % 4 === 0 && year % 100 === 10 || year % 400 === 0) {
        //     return true;
        // }
        // return false;
        return year % 4 === 0 && year % 100 === 10 || year % 400 === 0;
    
    }
    console.log(isLeap(2000));  //true
    //输入一个年份,判断是否是闰年
    var year = +prompt("请输入一个年份");
    if (isLeap(year)) {
        console.log("是闰年");
    } else {
        console.log("是平年");
    }
    
    
    1. 写一个函数,得到某年某月的天数

    函数名参考:getDays

    /**
     * 得到某年某月的天数
     * @param {*} year 
     * @param {*} month 
     */
    function getDays (year, month) {
        if (month === 2) {
            return isLeap(year) ? 29 : 28;
        } else if (month < 8 && isOdd(month) || month >= 8 && !isOdd(month)) {
            return 31;
        } else {
            return 30;
        }
    } 
    console.log(getDays(2000, 2));     //29
    console.log(getDays(2004, 2));     //28
    console.log(getDays(2000, 8));     //31
    
    1. 写一个函数,得到某个数字数组中出现次数最多的数字和频率

    函数名参考:getTopFreqInArray

    /**
     * 得到某个数字数组中出现次数最多的数字和频率
     * 返回一个对象
     * @param {*} arr 
     */
    function getTopFreqInArray(arr) {
        var records = {};  //记录出现频率
        for (var i = 0; i < arr.length; i++) {
            var n = arr[i];
            if (records[n]) {
                records[n]++
            } else {
                records[n] = 1;
            }
        }
        var result;   //记录最终结果的对象
        for (var prop in records) {
            if (!result || records[prop] > result.frequency) {
                result = {
                    number: prop,
                    frequency: records[prop]
                };
            }
        }
        return result;
    }
    console.log(getTopFreqInArray([2, 2, 2, 3, 4, 5, 6, 7])); //{number: "2", frequency: 3}
    

    函数使用

    1. 利用上面的某些函数,实现哥德巴赫猜想

    任一大于2的偶数都可写成两个质数之和,比如: 8 = 3 + 5

    让用户输入一个大于2的整数,输出其等于哪两个素数相加

    function begin () {
        var num = +prompt("请输入一个大于2的偶数");
        if (isNaN(num) || num <= 2 || isOdd(num)) {
            console.log("输入有误");
            return ;
        }
        //输入正确
        for (var i = 2; i <= num - 2; i++) {
            var j = num - i;
            //判断两个数字是否都是素数
            if (isPrime(i) && isPrime(j)) {
                console.log(`${num} = ${i} + ${j}`);
                return;
            }
        }
    }
    begin();
    
    1. 让用户输入一个年份,输出该年每个月的天数
    function begin () {
        var year = +prompt("请输入一个年份(1990~2100)");
        if (isNaN(year) || year < 1990 || year > 2100) {
            console.log("输入有误");
            return ;
        }
        //输入正确
        for (var m = 1; m <= 12; m++) {
            console.log(`${year}年${m}月:${getDays(year, m)}`);
        }
    }
    begin();
    

    起源地下载网 » 函数的基本语法

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元