JavaScript函數參數

JavaScript 函數參數

JavaScript 函數對參數的值(arguments)沒有進行任何的檢查。不會關注有多少個參數被傳遞,不關注傳遞的參數的數據類型。javascript

 

函數顯式參數與隱藏參數(arguments)java

函數顯式參數在函數定義時列出。數組

函數隱藏參數(arguments)在函數調用時傳遞給函數真正的值。函數

默認參數ui

若是函數在調用時缺乏參數,參數會默認設置爲: undefinedspa

有時這是能夠接受的,可是建議最好爲參數設置一個默認值:code

function a (x,y){對象

  if (y===undefined){ip

    y=0;內存

  }

  return x+y;

}

或者直接:

function a (x,y){

  y=y||0;

  return x+y;

}

 

若是函數調用時設置了過多的參數,參數將沒法被引用,由於沒法找到對應的參數名。 只能使用 arguments 對象來調用。

 

Arguments 對象

JavaScript 函數有個內置的對象 arguments 對象.          argument 對象包含了函數調用的參數數組。

 

經過值傳遞參數

若是函數修改參數的值,將不會修改參數的初始值(在函數外定義)。    總結:JavaScript函數傳值只是將參數的值傳入函數,函數會另外配置內存保存參數值,因此並不會改變原參數的值。

 

var x = 1; // 經過值傳遞參數

function a(x) {

  x++; //修改參數x的值,將不會修改在函數外定義的變量x

  console.log(x);

}

a(x); // 2

console.log(x); // 1

經過對象傳遞參數

在JavaScript中,能夠引用對象的值。所以咱們在函數內部修改對象的屬性就會修改其初始的值。  修改對象屬性可做用於函數外部(全局變量)。

var obj = {x:1}; // 經過對象傳遞參數

function a(obj) {

   obj.x++; //修改參數對象obj.x的值,函數外定義的obj也將會被修改

   console.log(obj.x);

 }

a(obj); // 2

console.log(obj.x); // 2

相關文章
相關標籤/搜索