zoukankan      html  css  js  c++  java
  • js 默认的参数、可变的参数、变量作用域

    可以通过arguments对象来实现可变的参数

    在函数代码中,使用特殊对象 arguments,开发者无需明确指出参数名,就能访问它们。

    arguments是一个数组对象,可以通过下标来实别参数的位置,通过.length来获参数的个数。

    代码实例:我们通过arguments来改变函数的默认参数

    1 <script>
    2         function demo(x,y){           
    3             x = arguments[0]?arguments[0]:1;   //arguments[0]代表demo函数的参数第一个
    4             y = arguments[1]?arguments[1]:2;   //arguments[1]代表demo函数的参数第二个
    5             return x+y
    6         }
    7         alert(demo(4,5))     //我们调用函数的参数=>9
    8         alert(demo())       //我们调用默认参数 =>3
    9 </script>

    代码实例:通过arguments.length来获取参数的长度所实现的参数和

     1 <script>
     2          function demo(){
     3              var count = arguments.length   //把参数的长度保存的count的变量中
     4              var sum =0                      //声名一个总和的变量
     5              for(var i =0;i<count;i++){      //使用for循环把所有参数的长度遍历出来
     6                  sum+=arguments[i]           //求出每个arguments所对应下标的参数的值相加  
     7              }
     8              return sum                  //把值返回给函数
     9          }
    10           alert(demo(1,2,3,4,5,6))       //=>把自己定义的参数传入,=>21
    11 </script>

    代码实例:通过arguments.length再来获取参数的长度所实现的参数最大值

     1 <script>
     2          function demo(){
     3              var count = arguments.length   //把参数的长度保存的count的变量中
     4              var max =0                      //声名一个最大值
     5              for(var i =0;i<count;i++){      //使用for循环把所有参数的长度遍历出来
     6                  if(arguments[i]>max){       //做一个if语句的判断,遍历出来所有最大值依次给与max,直接便利结束
     7                      max = arguments[i]
     8                  }           
     9              }
    10              return max                 //把值返回给函数
    11          }
    12           alert(demo(10,20,1,4,11))       //=>把自己定义的参数传入,=>20
    13 </script>

     变量的作用域:

     全局变量和局部变量的区别:

     全局在函数体外声名,从脚开始可以用到脚本结束。

     局部变量在函数体内声名变量只能在函数体内进行使用。

    代码示例:

    1 <script>
    2         var x = "全局变量x";
    3         function demo(){
    4             var x = "局部变量x";
    5             alert(x)   
    6         }
    7         demo()   //=>先是弹出局布变量x,因为我们调用函数执行代码块,因为x是在函数体内声名的与全局变量不冲突
    8         alert(x)  //=>再是弹出全局变量x,因为我们是在函数体外alert(x),只能调用到全局函数的变量,当函数执行完成,自动会回收掉函数体的内容
    9 </script>

    最好使用var语句来声名变量:

    代码示例 :

    1 <script>
    2        var x =1
    3        function demo(){
    4            x =2   //如果函数体内变量没有加var关键字,则这个变量则自动变为全局变量
    5            alert(x)
    6        }
    7        demo()    //=>输出结果为2
    8        alert(x)   //=>此时输出结果也为2,因为函数体内的变量用的是全局变量,变量重名赋值时会被覆盖掉
    9 </script>

    用一段混合型的代码示列来全面解析全局变量和局部变量

     1 <script>
     2     //解析一下全局变量和局部变量
     3       var x = 1,y =2;      //这是在script脚本内,函数体外声明的两个全局变量x和y
     4       function demo(x,y){
     5           document.write(x)    //=>undefined 因为在调用函数的时候没有写入参数,没有值的参数默认为undefined
     6           document.write(y)    //同上
     7           var x = 5,y =6;      //在此在函数体内声明了两个局部变量x和y
     8           document.write(x)    //由于js代码是从上到下执行的,此时的x用的是局部变量x
     9           document.write(y)    //同上
    10           z =x+y               //在函数体内声明了一个没有加var的z,此是它是全局变量,但是由是在函数体内赋值,用的x,y都是局部变量
    11           document.write(z)    //=>输出结果为11
    12       }
    13      demo()
    14      alert(z)           //由于z是全局变量,还是可以在函数外取到z的值  =>11
    15      alert(x)          //=>1     在函数体外得到x,得到的是全局变量x
    16      alert(y)          //同上
    17 </script>
  • 相关阅读:
    航班预定统计(差分数组+前缀和)
    救生艇
    Xcode 的正确打开方式——Debugging
    多次页面跳转后pop回主界面的问题
    理解Bitcode:一种中间代码
    使用AFNetWorking读取JSON出现NSCocoaErrorDomain Code=3840的解决方法
    No identities are available for signing的解决方法
    Aufree/trip-to-iOS
    Alcatraz -- 一个神奇的管理插件的Xcode插件
    GenericKeychain
  • 原文地址:https://www.cnblogs.com/Ziksang/p/5186375.html
Copyright © 2011-2022 走看看