參數arguments ,擁有 length屬性
arguments 也就是你傳入函數的變數的另一個稱呼而已,你也可以稱呼它為parameters。
特殊關鍵字arguments,如同this,是JavaScript引擎自動幫你設定好了。
arguments包含了所有的值,所有你傳入函數的參數,包含了所有傳入到所呼叫的函數的值。
arguments. length可用來查詢函數有沒有被傳入任何參數,也可透過陣列索引的方式來取實際值,例如:arguments*[0]*可取得第一個參數。
例:
當函數被執行時,它會自動設定好記憶體空間為這些值
function greet(firstname,lastname,language){
console.log(firstname);
console.log(lastname);
console.log(language);
}
greet();
結果是
undefined
undefined
undefined
例:
可以只傳進一部分參數
function greet(firstname,lastname,language){
console.log(firstname);
console.log(lastname);
console.log(language);
console.log(...);
}
greet('Jhon');
greet('Jhon','Doe');
greet('Jhon','Doe','es');
結果是
Jhon
undefined
undefined
...
Jhon
Doe
undefined
...
Jhon
Doe
es
...
例:
用預設值的概念去預設參數
function greet(firstname,lastname,language){
language = language || 'en';
console.log(firstname);
console.log(lastname);
console.log(language);
}
greet();
結果是
undefined
undefined
en
新增特殊關鍵字arguments
例:
function greet(firstname,lastname,language){
language = language || 'en';
console.log(firstname);
console.log(lastname);
console.log(language);
console.log(arguments);
console.log(...);
}
greet();
greet('Jhon');
例:
結果是
undefined
undefined
en
[ ]
...
undefined
undefined
en
["Jhon"]
...
arguments的結果會包含了所有參數傳入的值
arguments[ ] 很像陣列,但它不是陣列,指擁有一部份陣列功能。
因此如果要查詢函數有沒有被傳入任何參數,可以使用arguments.length,如果長度為0,表示這陣列是空的。
例:
查詢函數有沒有被傳入任何參數
function greet(firstname,lastname,language){
language = language || 'en';
if(arguments.length === 0){
console.log('Missing paramenters!');
console.log(...);
return;
}
console.log(firstname);
console.log(lastname);
console.log(language);
console.log(arguments);
console.log(...);
}
greet();
greet('Jhon');
結果是
Missing paramenters!
...
undefined
undefined
en
["Jhon"]
...
例:
利用arguments找出參數第一個位置
function greet(firstname,lastname,language){
language = language || 'en';
if(arguments.length === 0){
console.log('Missing paramenters!');
console.log(...);
return;
}
console.log(firstname);
console.log(lastname);
console.log(language);
console.log(arguments);
console.log('arg 0:' + arguments[0]);
console.log(...);
}
greet();
greet('Jhon');
結果是
Missing paramenters!
...
undefined
undefined
en
["Jhon"]
...