es6 引入 rest 引數(形式為 ...變數名) ,用於獲取函式的多餘引數,這樣就不需要使用 arguments 物件了。rest 引數搭配的變數是乙個陣列,該變數將多餘的引數放入陣列中。
function add(...values)
return sum;
}add(2, 5, 3) // 10
上面**的 add 函式是乙個求和函式,利用 rest 函式,可以向該函式傳任意數目的引數。
下面是乙個 rest 引數代替 arguments 變數的例子。
// arguments變數的寫法
function sortnumbers()
// rest引數的寫法
const sortnumbers = (...numbers) => numbers.sort();
上面**的兩種寫法,比較後可以發現,rest 引數的寫法更自然也更簡潔。
arguments 物件不是陣列,而是乙個類似陣列的物件。所以為了使用陣列的方法,必須使用 array.prototype.slice.call 先將其轉為陣列。rest 引數就不存在這個問題,它就是乙個真正的陣列,陣列特有的方法都可以使用。下面是乙個利用 rest 引數改寫陣列 push 方法的例子。
function push(array, ...items) );
}var a = ;
push(a, 1, 2, 3)
注意,rest 引數之後不能再有其他引數(即只能是最後乙個引數),否則報錯。
// 報錯
function f(a, ...b, c)
函式的 length 屬性,不包括 rest 引數。
(function(a) {}).length // 1
(function(...a) {}).length // 0
(function(a, ...b) {}).length // 1
ES6中的rest引數
es6的新方法,引入rest引數 形式為.變數名 用於獲取函式的多餘引數,這樣就不需要arguments物件。function add values return sum add 2,5,3 10利用rest引數,可以向該函式傳入任意數目的引數 arguments function sortnumb...
ES6 函式擴充套件
函式在js裡是相當重要的一部分了,es6裡也新增了一些函式方法,來看一下 test hello hello world test hello kill hello kill es6增加了函式引數預設值,可以直接在宣告引數的同時賦預設值,但是也可以後面重新賦值 test2 kill 括號內有引數x時,...
ES6函式擴充套件
函式引數的預設值 在es5中,我們想給函式乙個預設值,需要這樣寫 function add x,y 在es6中 可以這樣寫 function add x,y ss add dd ddss add ss dd ssdd add dd dd我們只需要在引數上直接寫上我們想要的預設值就好了。當我們給函式乙...