我正在看一個開源的javascript應用程序,特別是Firefox的擴展。Javascript - '...'的含義
我看到這個語法在多個地方,我不知道這是什麼意思,如果任何人都可以在這一點上闡明一些。
如..
return (...args)
或...
console.info(message, ...args.slice(1));
任何想法,這是什麼 '......' 呢?這就像是獲得第三個參數還是什麼?第三個迴應?它很難嘗試和調試,但無法理解它。
我正在看一個開源的javascript應用程序,特別是Firefox的擴展。Javascript - '...'的含義
我看到這個語法在多個地方,我不知道這是什麼意思,如果任何人都可以在這一點上闡明一些。
如..
return (...args)
或...
console.info(message, ...args.slice(1));
任何想法,這是什麼 '......' 呢?這就像是獲得第三個參數還是什麼?第三個迴應?它很難嘗試和調試,但無法理解它。
這是一個Ecmascript 6「rest」參數。當用作參數或參數時,它允許您接收或傳遞一個數組作爲單獨的參數。
http://ariya.ofilabs.com/2013/03/es6-and-rest-parameter.html
將解包的數組(參數)爲正式參數列表。除此之外,這允許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}
希望這有助於你理解 「...」!
最終參數類型(參數名稱前)後的三個時段表示最後一個參數可以作爲數組或參數序列傳遞。可變參數只能用於最後一個參數位置(靜態)
它是[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