2015-02-09 97 views
3

我正在看一個開源的javascript應用程序,特別是Firefox的擴展。Javascript - '...'的含義

我看到這個語法在多個地方,我不知道這是什麼意思,如果任何人都可以在這一點上闡明一些。

如..

return (...args) 

或...

console.info(message, ...args.slice(1)); 

任何想法,這是什麼 '......' 呢?這就像是獲得第三個參數還是什麼?第三個迴應?它很難嘗試和調試,但無法理解它。

+2

它是[Spread運算符](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator)。與它類似,但是與命名函數參數一起使用的是[Rest operator](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters)。 – 2015-02-09 23:26:44

回答

2

將解包的數組(參數)爲正式參數列表。除此之外,這允許rest參數的成員作爲一組形式參數傳遞給另一個函數。

下面是一個例子:

var stats = function(...numbers) { 
    for (var i=0, total = 0, len=numbers.length; i<len; i++) { 
     total += numbers[i]; 
    } 
    return { 
     average: total/arguments.length, 
     max: Math.max(numbers); //spread array into formal params 
    } 
} 

stats(5, 6, 8, 5); //{average: 6, max: 8} 

希望這有助於你理解 「...」!

+0

數據是否包含平均值和最大值?即stats.average? – tneduts 2015-02-10 20:09:43

+0

是的,那是絕對正確的。 – Surfyst 2015-02-10 23:59:01

0

最終參數類型(參數名稱前)後的三個時段表示最後一個參數可以作爲數組或參數序列傳遞。可變參數只能用於最後一個參數位置(靜態)