最近開始學習JS, 因爲東西太多,而且比較繁瑣。所以把自己的學習心得記錄在這裏,可以加深一下印象。
今天接觸到了JS的arguments對象。查閱了一些資料,現在總結一下。
arguments對象是JS的內置對象,不能顯式的進行創建。是Array-like(類似於數組)對象,是函數的參數組成的對象。可以通過數組形式訪問arguments對象的值。
arguments[0],arguments[1],...
也可以通過這種形式爲arguments賦值,
arguments[0] = 'arg0';arguments[1] = 'arg1';...
arguments 對象類似於數組,但不是數組,arguments只有一個數組的屬性--length;
arguments.length 表示函數參數的長度, 及參數的個數。
arguments可以轉化成數組(三種方式):
var args = Array.prototype.slice.call(arguments); //對象冒充
var args = Array.from(arguments); //Array.from方法
var arguments = [...arguments]; //spread syntax , 詳情請見https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator
既然講到了函數參數, 我們就來研究一下函數的參數形式。
Javascript中函數參數分爲顯式參數跟隱式參數。顯式參數在函數定義式列出。例如
functionName (parameter1,parameter2, parameter3) {
//代碼塊
} //當中的parameter1,parameter2, parameter3 即爲顯式參數
而隱式參數(arguments)是在函數調用是傳遞給函數的真正的值。
函數在調用時如果缺少參數,參數會默認設置爲:undefined.
如果函數調用時設置了過多的參數,參數將無法被引用,因爲無法找到對應的參數名。只能使用 arguments 對象來調用。
既然arguments是函數參數組成的類似於數組的對象,那麼我們當然通過arguments來獲取函數的參數。
x = findMax(1, 123, 500, 115, 44, 88);
function findMax() {
var i, max = 0;
for (i = 0; i < arguments.length; i++) {
if (arguments[i] > max) {
max = arguments[i];
}
}
return max;
}
arguments常用的屬性:
1.arguments.callee Reference to the currently executing function
2.arguments.length Reference to the number of arguments passed to the function
舉一個例子,來自MDN
function myConcat(separator) {
var args = Array.prototype.slice.call(arguments, 1); //這裏的參數1,表示從arguments[1]開始取值
return args.join(separator);
}
// returns "...., orange, blue"
myConcat(", ", "....", "orange", "blue");
// returns "elephant; giraffe; lion; cheetah"
myConcat("; ", "elephant", "giraffe", "lion", "cheetah");
// returns "sage. basil. oregano. pepper. parsley"
myConcat(". ", "sage", "basil", "oregano", "pepper", "parsley");
到這裏,對arguments對象應該有一個初步的瞭解了。
在CSDN寫的第一篇日誌,棒棒噠,給自己鼓個掌。