javascript函數中的傳遞參數

ECMAScript 中全部函數的參數都是按值傳遞的,言下之意就是說,參數不會按引用傳
遞,雖然變量有基本類型和引用類型之分。ide

 

  
  
           
  
  
  1. function box(num) { //按值傳遞,傳遞的參數是基本類型  
  2.     num += 10; //這裏的num 是局部變量,全局無效  
  3.     return num;  
  4. }  
  5. var num = 50;  
  6. var result = box(num);  
  7. alert(result); //60  
  8. alert(num); //50 

PS:以上的代碼中,傳遞的參數是一個基本類型的值。而函數裏的num 是一個局部變
量,和外面的num 沒有任何聯繫。
下面給出一個參數做爲引用類型的例子。函數

 

  
  
           
  
  
  1. function box(obj) { //按值傳遞,傳遞的參數是引用類型  
  2.      obj.name = 'Lee';  
  3. }  
  4. var p = new Object();  
  5. box(p);  
  6. alert(p.name); 
PS:若是存在按引用傳遞的話,那麼函數裏的那個變量將會是全局變量,在外部也可
以訪問。好比PHP 中,必須在參數前面加上&符號表示按引用傳遞。而ECMAScript 沒有這
些,只能是局部變量。能夠在PHP 中瞭解一下。
PS:因此按引用傳遞和傳遞引用類型是兩個不一樣的概念。

 

  
  
           
  
  
  1. function box(obj) {  
  2.     obj.name = 'Lee';  
  3.     var obj = new Object(); //函數內部又建立了一個對象  
  4.     obj.name = 'Mr.'//並無替換掉原來的obj  

最後得出結論,ECMAScript 函數的參數都將是局部變量,也就是說,沒有按引用傳遞。spa

相關文章
相關標籤/搜索