《JavaScript高級程序設(shè)計》讀書筆記
js中函數(shù)的參數(shù)與別的語言的參數(shù)有些不同。js中的函數(shù)不介意傳遞進(jìn)來的參數(shù)有幾個旷坦,也不介意是什么數(shù)據(jù)類型掏熬。
也就是說,即便是定義的函數(shù)只接收兩個參數(shù)秒梅,但是在調(diào)用這個函數(shù)的時候旗芬,并不一定傳遞兩個參數(shù),可以傳遞一個捆蜀,三個或者不傳參數(shù)疮丛。解析器也不會報錯。
之所以會這樣辆它,是因為誊薄,js中的參數(shù)在內(nèi)部是用一個數(shù)組來表示的。函數(shù)接收到的始終都是這個數(shù)組锰茉,而不關(guān)心數(shù)組內(nèi)包含了哪些參數(shù)呢蔫。
如果這個數(shù)組中不包含任何元素,無所謂飒筑;如果包含多個元素片吊,也沒有問題。
實際上协屡,在函數(shù)體內(nèi)可以通過arguments
對象來訪問這個參數(shù)數(shù)組俏脊。并獲取每個參數(shù)。
請看下面的這個函數(shù)著瓶,這個函數(shù)有兩個參數(shù),分別是name
和say
:
function sayHello(name, say) {
console.log(`${name}說${say}`)
}
上面的函數(shù)和下面的函數(shù)功能是一樣的:
function sayHello() {
console.log(`${arguments[0]}說${arguments[1]}`)
}
上面的兩個函數(shù)對比說明:js中命名的參數(shù)提供了便利,但不是必須的材原。
完沸久。