1. 程式人生 > >js 函式實參列表arguments和形參的那點事兒

js 函式實參列表arguments和形參的那點事兒

**JavaScript是解釋下前端語言和其他編譯性後端語言(C++、java、python、golang…)不一樣,由於變數的型別沒那麼嚴格,一個var就可以定義全部,導致語法也比較鬆懈!函式形參和實參傳遞的時候,也無需一一對應,都是隱式轉換了!而後端編譯性語言是有嚴格的變數型別定義的,所以規則很嚴格!
**

JavaScript和其他高階語言的核心區別就是:太多的隱式型別轉換,導致變數型別沒那麼嚴格,使得語法沒那麼嚴格!

//如果實參和形引數量相等,那麼形參和argments之間有種對映關係,形參變數值改變對應位置的arguments[i]也隨之改變,反之亦然。

複製程式碼
function test(a,b){
b = 3;
console.log(arguments[1]); //3

arguments[1] = 4;
console.log(b);                    //4
  • List item

}
test(1,2);
複製程式碼
//如果實參比形參少,那麼多餘的形參和argments之間就沒有了對映關係,即多餘形參值得改變,對應位置的arguments[i]的值仍為undefined,反之亦然。

複製程式碼
function test(a,b){
//b = 3;
// console.log(arguments[1]); //undefined

arguments[1] = 4;
console.log(b);                  //undefined  

}
test(1);
複製程式碼