文章标题

JavaScript03

个人总结,不足请谅解,总结不断进行中,如有技术探讨请私信,不胜感谢(^__^)

回顾

  • while循环特点

    • 先判断,后循环,有肯恩过一次都不循环,一般用在不知道循环次数的需求上
  • do-while循环特点

    • 先循环后判断,至少执行一次循环体内容
  • for循环特点

    • 已知循环次数,与while相同

函数

函数的参数

  • 函数在定义的时候函数名后面的小括号中的变量叫做参数
  • 函数在定义的时候,函数名后面的小括号里的变量不需要使用var声明
  • 函数在调用的时候,传入的值也叫参数

形参

  • 函数在定义的时候函数名后面括号内的参数

实参

  • 函数在调用的时候函数名后面括号内的参数

传参

  • 把实参的值传给形参

注意

  • 在JS中函数的形参个数可以与实参个数不一致

返回值

  • 在函数内部,如果有return,则该函数就有返回值,return后面的内容就是该函数的返回值结果
  • 函数声明了,没有返回值,结果是undefined
  • 函数中return下面的代码不执行
  • return后没有明确的返回值,结果是undefined

函数的四种表现方式

  • 无参数,无返回值
  • 无参数,有返回值
  • 有参数,无返回值
  • 有参数,有返回值

案例

  • 求两个数的和
    function getSum(x,y){
        return x+y;
    }
    console.log(getSum(20,30));
    
  • 求两个数的差
    function getSub(x,y){
        return x-y;
    }
    console.log(getSub(20,30));
    
  • 求1-100之间所有数的和
     function getSum(){
         var sum=0;
        for(var i=1;i<=100;i++){
            sum+=i;
        }
        return sum;
    }
    console.log(getSum());
    
  • 求m-n之间所有数的和
    function getSum(m,n){
         var sum=0;
        for(var i=m;i<=n;i++){
            sum+=i;
        }
        return sum;
    }
    console.log(getSum(1,22));
    
  • 反转数组
    function getArr(arr){
        for(var i=0;i<arr.length/2;i++){
            var temp=arr[i]
            arr[i]=arr[arr.length-1-i]
            arr[arr.length-1-i]=temp;
        }
        return arr;
    }
    var ccc=[1,2,3,4,5]
    console.log(getArr(ccc));
    
  • 求三个数字中的最大值
    function getMaxNum(x,y,z){
        return x>y?(x>z? x:z):(y>z? y:z)
    }
    console.log(getMaxNum(1,2,3))
    
  • 求数组中的最大值,最小值,求和
    function getMaxAndMinAndSum(array){
        var sum=0;
        var min=array[0];
        var max=array[0];
        for(var i=0;i<array.length;i++){
            if(max<array[i]){
                max=array[i];
            }
            if(min>array[i]){
                min=array[i];
            }
            sum+=array[i];
        }
        var maxMinSum=[max,min,sum];
        return maxMinSum;
    }
    var arr=[3,4,25,67,32,32];
    var array=getMaxAndMinAndSum(arr);
    console.log("最大值是:"+array[0]+"最小值是"+array[1]+"和是:"+array[2]);
    
  • 数组排序
    function paiXu(arr){
        for(var i=0;i<arr.length-1;i++){
            for(var j=0;j<arr.length-1-i;j++){
                if(arr[j]<arr[j+1]){
                    var temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }
        }
        return arr;
    }
    var a=[3,44,56,74,3,2,1]
    console.log(paiXu(a))
    
  • 求1-100之间所有奇数的和
    function jiSum(m,n){
                m=m||0
                n=n||0
                var x=m>n?m:n;
                var y=m<n?m:n;
                var sum=0;
                for(var i=y;i<=x;i++){
                    if(i%2!=0){
                        sum+=i;
                    }
                }
                return sum;
            }
            console.log(jiSum())
    
  • 求一个数字是否是质数
    function isPrime(num){
        for(var i=2;i<num;i++){
            if(num%i==0){
                return false;
            }
        }
        return true;
    }
    var flag=isPrime(7)
    if(flag==true){
        console.log("是质数")
    }else{
        console.log("不是质数")
    }
    
  • 求圆的面积
    function getS(r){
        return Math.PI*r*r;
    }
    console.log(getS(5));
    
  • 求8的阶乘
        function getJie(num){
        var result=1;
        for(var i=1;i<=num;i++){
            result*=i;
        }
        return result;
    }
    console.log(getJie(5));
    
  • 求8以内的阶乘和
    function getSumJie(num){
        var sum=0;
        for(var i=1;i<=num;i++){
            sum+=getJie(i);
        }
        return sum;
    }
    console.log(getSumJie(5))
    //求某个数字的阶乘和的结果是极为数字
    function getWei(num){
        var i=1;
        while(num>=10){
            num/=10;
            i++
        }
        return i;//位数
    }
    console.log(getWei(getSumJie(5)));
    
  • 求斐波那契数列第八个数字的值
    function suLie(a){
        var num1=1;
        var num2=1;
        var sum=0;
        for(var i=3;i<=a;i++){
            sum=num1+num2;
            num1=num2
            num2=sum;
        }
        return sum;
    }
    console.log(suLie(8));
    
  • 根据年月日求这一天是此年的第几天
    //判断年份是不是闰年
    function isLeapYear(year){
       //if(year%4==0&&year%100!=0||year%400==0){}
        return year%4==0&&year%100!=0||year%400==0;
    }
    function getDays(year,month,day){
        var days=day;//记录所有的天数
        if(month==1){
            return day;
        }
        //累加所有月份的天数
        var months=[31,28,31,30,31,30,31,31,30,31,30,31];
        for(var i=0;i<month-1;i++){
            days+=months[i];
        }
        if(month>2&&isLeapYear(year)){
            days++;
        }
        return days;
    }
    console.log(getDays(2017,3,2))
    

函数的两种定义方式

  • 函数声明
    • function 函数名(){}
    • 命名函数:函数有名字
    • 匿名函数:函数没有名字
  • 函数表达式
    • 使用匿名函数声明,赋值给一个变量

      var f1=function (){
          console.log()
      };
      f1();
      ---
      function f1(){
          console.log("test")
      }
      
      console.log(f1())//undefined
      ---
      (function (){console.log("test")})();//函数自调用,只能用一次,jQuery
      

JS中没有块级作用域

  • 作用域

    • 变量(对象)的是用范围
  • 局部作用域

    • 在函数内部声名的变量,函数外面无法访问,这种变量叫局部变量,使用范围在函数中,使用的范围叫局部作用域
  • 全局作用域

    • 在script标签中声明的变量,可以再页面的任何位置访问的到,叫全局变量,适用范围在整个页面
    • 隐藏全局变量

          num=100;//隐藏全局变量:声明变量不使用var
          console.log(num);
      
          var num1=10;//全局变量,不可删除
          num2=20;//可以删除--不推荐使用
      
          delete num1;删除变量
          delete num2;
      
  • 块级作用域

    • 变量在一对大括号中的使用范围(if语句,for语句,while…)
    • JS中没有块级作用域

函数作为参数和返回值使用

  • 函数可以作为参数使用

    • 回调函数
    • 函数作为其他函数的参数

  • 函数可以作为返回值使用

arguments对象(伪数组)

  • arguments可以获取函数调用的时候传入的参数

    function getSum() {
        console.log(arguments.length);//调用函数的时候传入的参数的个数
        console.log(arguments[0]);
        console.log(arguments[1]);
        console.log(arguments[2]);
        var sum=0;
        for(var i=0;i<arguments.length;i++){
            sum+=arguments[i];
        }
        return sum;
    
    }
    
    var s=getSum(10,20,100);//调用
    console.log(s);
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值