JavaScript arguments物件詳解
arguments是一個特殊物件,不用且不能由程式設計師主動建立。
函式被呼叫時,此物件會自動建立,程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼function func(x,y){ for(var index=0;index<arguments.length;index++){ console.log(arguments[index]); } } func(1, 2, 3, 4)
依次列印1,2,3,4四個引數,解析如下:
(1).儲存了實際傳入函式的引數。
(2).與陣列類似,可以使用索引訪問其中引數或者length返回引數數量。
關於形參和實參可以參閱JavaScript函式形參或者實參一章節。
利用arguments物件可以實現一些驗證功能,比如對函式傳入的引數數目限制。
如果傳入的數量與期望數目不同,則報錯。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼function func() { if( arguments.length == 2 ){ return arguments[0] + arguments[1]; }else{ return '引數數目錯誤'; } } console.log(func(2,4,6));
程式碼執行效果截圖如下:
程式碼分析如下:
(1).函式期望傳入2個引數。
(2).呼叫函式後,arguments物件儲存實際傳入的引數(2,4,6)。
(3).arguments.length屬性獲取實際傳入引數的數量,判斷傳入的數量是否兩個,如果是兩個引數,那將兩個引數相加,並返回它們的和,如果傳入引數的數量不是兩個,則返回"引數數目錯誤"。
(4).引數可以通過與陣列相同的方式訪問,arguments[0]返回從左邊數第一個引數,arguments[1]返回從左邊起第二個引數,以此類推。
是陣列還是物件:
在前面已經介紹,arguments是物件,但非常類似於陣列:
(1).可以使用索引訪問其中儲存的資料。
(2).使用length屬性返回儲存資料的數目。
但它並非是陣列,證明這一點非常簡單,如果是陣列,那麼肯定可以使用陣列物件的方法。
程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼function func(x,y){ arguments.push(5) } func(1, 2, 3, 4)
上面程式碼報錯,因為arguments物件並不是陣列,所以沒有push方法。
將arguments轉換為陣列:
非常簡單,程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼執行程式碼function func(x,y){ let arr=Array.prototype.slice.apply(arguments); arr.push(5); console.log(arr); } func(1, 2, 3, 4)
上面程式碼將arguments物件轉換為陣列,更多內容參閱如下文章:
(1).prototype參閱JavaScript prototype一章節。
(2).apply()參閱JavaScript appy()方法一章節。
(3).slice()參閱JavaScript slice()方法一章節。
相關文章
- JavaScript arguments 物件JavaScript物件
- js-arguments 函式引數物件詳解JS函式物件
- JavaScript 深入之類陣列物件與 argumentsJavaScript陣列物件
- JavaScript 檔案物件詳解JavaScript物件
- JavaScript中 Map 物件詳解JavaScript物件
- 你知道 JavaScript 中的 Arguments 物件都有哪些用途嗎?JavaScript物件
- JavaScript之argumentsJavaScript
- JavaScript物件導向詳解(原理)JavaScript物件
- JavaScript物件導向名詞詳解JavaScript物件
- js函式,arguments物件JS函式物件
- JavaScript內建物件--Error型別詳解JavaScript物件Error型別
- JavaScript物件導向修改標籤頁詳解JavaScript物件
- 關於JavaScript中arguments的用法JavaScript
- JavaScript進階知識點——函式和物件詳解JavaScript函式物件
- JavaScript this詳解JavaScript
- 證明arguments是個物件不是陣列物件陣列
- CSSStyleSheet 物件詳解CSS物件
- File 物件詳解物件
- 詳解JavaScript原型JavaScript原型
- JavaScript之this詳解JavaScript
- JavaScript事件詳解JavaScript事件
- JavaScript Promise 詳解JavaScriptPromise
- JavaScript 物件解構賦值JavaScript物件賦值
- Git物件概念詳解Git物件
- Java 物件排序詳解Java物件排序
- 【JS系列】物件詳解JS物件
- 深入瞭解JavaScript中的物件JavaScript物件
- JavaScript中的this詳解JavaScript
- JavaScript小球碰壁詳解JavaScript
- JavaScript表格排序詳解JavaScript排序
- JavaScript閉包詳解JavaScript
- 詳解Java的物件建立Java物件
- js--history 物件詳解JS物件
- 深入學習js之——類陣列物件與arguments #11JS陣列物件
- Javascript 物件 – 字串物件JavaScript物件字串
- JavaScript 函式引數解構物件JavaScript函式物件
- Function.caller, arguments.caller, arguments.callee, arguments.callee.calllerFunction
- 玩轉 JavaScript 之詳解 thisJavaScript