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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM