function myfunc(value1, value2='defaultValue') {
//some stuff
}
如何知道如果參數傳入或不傳入函數。我知道默認值將被設置,如果你沒有傳入任何參數。我實際上是想檢查用戶是否傳遞任何東西作爲第二個參數(即使它與默認值相同)並更改我的返回值相應的價值。具有默認參數的ES6:參數是否被傳入
我被檢查出ES6 docs和this SO answer,真的沒有什麼,我期待的。
感謝,
function myfunc(value1, value2='defaultValue') {
//some stuff
}
如何知道如果參數傳入或不傳入函數。我知道默認值將被設置,如果你沒有傳入任何參數。我實際上是想檢查用戶是否傳遞任何東西作爲第二個參數(即使它與默認值相同)並更改我的返回值相應的價值。具有默認參數的ES6:參數是否被傳入
我被檢查出ES6 docs和this SO answer,真的沒有什麼,我期待的。
感謝,
arguments
仍然代表你發送的實際參數,所以arguments.length
會給你的信息。
function myfunc(value1, value2='defaultValue') {
console.log("value1", value1);
console.log("value2", value2);
console.log("length", arguments.length);
}
myfunc("foo");
在一個標準的JavaScript引擎,輸出
value1 foo value2 defaultValue length 1
arguments
不會箭頭功能工作,雖然和estus發佈a good alternative that does。
對於複雜的參數處理其餘參數可以是有益的,也不贊成arguments.length
:
function myfunc(...args) {
let [value1, value2 = 'defaultValue'] = args;
console.log("value1", value1);
console.log("value2", value2);
console.log("args.length", args.length);
}
myfunc("foo");
手冊參數解析爲與直觀的方法爲缺省值,即,通過當參數中的情況下是特別有用應取代默認值,即使它是undefined
:
function myfunc(...args) {
const defaultArgs = ['defaultValue1', 'defaultValue2'];
let [value1, value2] = Object.assign(defaultArgs, args);
...
}
優秀的選擇,並且具有在箭頭函數中工作的優勢('arguments'不會)。 –
這是正確的,箭頭和常規函數之間的不一致是選擇公分母(休息)的很好理由。爲了讓事情變得更糟,'arguments'是延遲動作炸彈,它將在傳輸代碼和一些本地實現中以箭頭形式工作,但會在其他本地實現中破解。 – estus