js编程之函数

判断是否是质数:

function judgeisprime(number) {
            var isprime = true;
            for (i = 2; i < number; i++) {
                if (number % i == 0) {
                    //说明不是质数
                    isprime = false;
                    //跳出循环
                    break;
                }
            }
            if (isprime) {
                console.log('是质数');
            } else {
                console.log('不是质数');
            }
        }
        //函数调用
        judgeisprime(9);
        judgeisprime(13);
//求一组数中的最大值
        function getmax(arr) {
            var max = arr[0];
            for (i = 0; i < arr.length; i++) {
                if (max < arr[i]) {
                    max = arr[i];
                }
            }
            return max;
        }
        var result = getmax([12, 23, 2, 3, 56, 13, 15]);
        console.log(result);

//函数的返回值只能有一个,如果要返回多个数值可以使用数组的形式

        // return 返回值,当没有return的时候返回的是undefied

        //return后面不跟数值的时候返回的是undefied,return结束程序运行。

 //求一组数中的最小值
         function getmin(arr) {
             var min = arr[0];
             for (i = 0; i < arr.length; i++) {
                 if (min > arr[i]) {
                     min = arr[i];
                 }
             }
             return min;
         }
         var result = getmin([12, 23, 2, 3, 56, 13, 15]);
         console.log(result);

求阶乘:

//求阶乘
        var number = 1;

        function jicheng(n) {
            for (i = 1; i <= n; i++) {
                number *= i;
            }
            return number;
        }
        var res = jicheng(5);
        console.log(res);

求1!+2!+3!+....+n!

   //求1!+2!+3!+....+n!
        var sum = 0;

        function getsum(n) {
            for (i = 1; i <= n; i++) {
                sum += jicheng(i);
            }
            return sum;
        }
        var res1 = getsum(5);
        console.log(res1);

arguments用来获取实参的个数,非常像数组,但是不是数组 ,每个函数里面都内置了argumengts对象。

案例:求任意个数的最大值

//求任意个数的最大值
        function getmax() {
            var max = arguments[0];
            for (i = 1; i < arguments.length; i++) {
                if (max < arguments[i]) {
                    max = arguments[i];
                }
            }
            return max;
        }
        var res2 = getmax(1, 5, 3, 2);
        console.log(res2);

        //求任意个数的和
        var sum = 0;

        function getsum() {
            for (i = 0; i < arguments.length; i++) {
                sum += arguments[i];
            }
            return sum;
        }
        var res1 = getsum(1, 2, 3, 4, 5, 6);
        console.log(res1);

对数组排序,从小到大的顺序 -----冒泡排序

 function sort(array) {
            //外层循环控制趟数
            for (i = 0; i < array.length - 1; i++) {
                for (j = 0; j < array.length - 1 - i; j++) {
                    var issort = true;
                    if (array[j] > array[j + 1]) {
                        issort = false;
                        var temp = array[j + 1];
                        array[j + 1] = array[j];
                        array[j] = temp;
                    }
                }
                if (issort) {
                    break;
                }
            }
            return array;
        }
        console.log(sort([12, 2, 56, 3, 78, 4]));

判断是否是闰年:

//判断是否是闰年
        function isleapyear(year) {
            var result = false;
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                result = true;
            }
            return result;
        }
        console.log(isleapyear(2000));
        console.log(isleapyear(1995));

 输入某年某月某日,判断这一天是这一年的第几天?

function getdays(year, month, day) {
            var days = day;
            for (i = 1; i < month; i++) {
                switch (i) {
                    case 1:
                    case 3:
                    case 5:
                    case 7:
                    case 8:
                    case 10:
                    case 12:
                        days += 31;
                        //不要忘记break否则结果是错误的
                        break;
                    case 4:
                    case 6:
                    case 9:
                    case 11:
                        days += 30;
                        break;
                    case 2: //判断是平年 28还是闰年29
                        if (isleapyear(year)) {
                            days += 29;
                        } else {
                            days += 28;
                        }
                        break;

                }
            }
            return days;
        }
        console.log(getdays(2020, 8, 22));
        console.log(getdays(2020, 1, 22));

作用域:就是变量或者函数起作用的范围

变量分为全局变量和局部变量。

全局变量:在任何位置都可以访问到的变量,不使用var定义的变量是全局变量(不推荐使用)

局部变量:只在固定的代码片段内可以访问的变量,最常见的就是函数内部。

块级作用域

任何一对花括号({和})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用域。 在es5之前没有块级作用域的的概念,只有函数作用域,现阶段可以认为JavaScript没有块级作用域。

预解析

JavaScript代码的执行是由浏览器中的JavaScript解析器来执行的。JavaScript解析器执行JavaScript代码的时候,分为两个过程:预解析过程和代码执行过程

预解析过程:

  1. 把变量的声明提升到当前作用域的最前面,只会提升声明,不会提升赋值。

  2. 把函数的声明提升到当前作用域的最前面,只会提升声明,不会提升调用。

  3. 先提升var,在提升function。

  4. 
            预解析
            var a 
            function abc() {
                var a;
                alert(a);
                a=10;
            }
            a=25;
            abc();
    
            var a ;
            function a() {
                console.log('aaaa');
            }
            //当个变量名和函数命名相同时候,此时函数优先
            console.log(a);//此时打印的是函数a
            a=1;
            console.log(a)// 打印的是变量a

    变量提升

  5. // 3、-----------------------------------
    f1();
    console.log(c);
    console.log(b);
    console.log(a);
    function f1() {
      var a = b = c = 9;
      console.log(a);
      console.log(b);
      console.log(c);
    }

  6. 变量提升以后
    function f1() {
        var a
        a=b=c=9;
    //   var a = b = c = 9;
      console.log(a);
      console.log(b);
      console.log(c);
    }
    f1();
    console.log(c);  
    console.log(b);
    console.log(a); //报错

    var a = 18;
            f1();
            function f1() {
                var b = 9;
                console.log(a);
                console.log(b);
                var a = '123';
            }

    变量提升以后结果: 

    var a ;
    function f1() {
      var b 
      var a
      b = 9;
      console.log(a); //undefined;
      console.log(b);   //9
      a = '123';
    }
    a = 18
    f1();

     

     

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值