理解js引數——簡單易懂的arguments

我們在使用js函式時經常會傳引數,ECMAScript是不限制函式傳幾個引數,也不介意引數是什麼型別。因為引數的內部使用一個數組表示的,所以你不管傳遞多少引數,函式接收的都是一個數組,這個陣列就是用

arguments

物件表示。

理解js引數——簡單易懂的arguments

呼叫showArg函式並且傳遞了5個引數

我們在控制檯看下:

理解js引數——簡單易懂的arguments

引數儲存在arguments物件中

arguments物件與陣列類似,但是它並不是Array的例項化。我們訪問其中的引數,便可以用陣列訪問元素的方式。

如下:

理解js引數——簡單易懂的arguments

童靴們可能在給函式傳遞引數的時候直接在函式的括號裡面命名引數:

理解js引數——簡單易懂的arguments

但是小編上面的例子中都沒有給函式的引數命名,這也體現了ECMAScript的一個特點:命名的引數只是提供一個便利,但它並不是必需的。

另外,我們可以使用length獲取引數的長度。如下,

理解js引數——簡單易懂的arguments

瀏覽器中檢視:

理解js引數——簡單易懂的arguments

我們可以利用這一點讓函式接收任意個引數來實現某些功能,如下,

理解js引數——簡單易懂的arguments

上面的函式所實現的功能是,如果只有一個引數,那麼讓變數result的值等於該引數加上1。如果有兩個引數,那麼讓變數result的值等於兩個引數相加。

關於arguments還有一個特點就是,它的值與對應命名的引數的值保持一致的。

function addNum(){

arguments[0]=10;

console。log(arguments[0]+arguments[1])

}

addNum(1,5)

上面的函式呼叫後輸出的結果是15,因為每次執行addNum()函式,都會把第一個引數重寫。第一個引數的值應該和arguments[0]的值一致,所以被改成了10。

如果你是一個愛學習的孩子,那就關注小白前端,好文章隨時推薦給您。你必須非常努力,才能看起來毫不費力!

理解js引數——簡單易懂的arguments