iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0
自我挑戰組

學習JavaScript的基礎概念系列 第 6

Day6 參數arguments

  • 分享至 

  • xImage
  •  

參數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"]
...


上一篇
Day5 JavaScript的參數this
下一篇
Day7 call()、apply()、bind()
系列文
學習JavaScript的基礎概念30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言