-1
默認參數不分配給參數數組對象一樣沒有定義:ES6默認參數在參數
function fn(test = "test") {
console.log(arguments); //[]
}
這可能是有用的只是什麼用戶傳遞給函數知道,但似乎太棘手。
這會改變嗎?
默認參數不分配給參數數組對象一樣沒有定義:ES6默認參數在參數
function fn(test = "test") {
console.log(arguments); //[]
}
這可能是有用的只是什麼用戶傳遞給函數知道,但似乎太棘手。
這會改變嗎?
不,這不會改變。
事實上它已經做變化 - 以前的arguments
對象的各項指標被映射到相應的參數變量進行讀寫(恐怖來思考!)。這被證明具有破壞性的性能影響,因爲它阻止了很多引擎優化,並且在ES5中被棄用(然而,出於兼容性原因,僅在新的嚴格模式下)。在ES6中,如果它們在參數列表中使用新的ES6功能(如解構,默認初始化程序或其他語法),則該行爲在不嚴格模式下也不推薦使用。
arguments
object is just a simple object with the argument values that passed to the function。注意,默認值沒有被傳遞,它只是在函數體的開頭初始化變量的語法糖。
如果映射到範圍變量,它是much more complicated。
您在徵求關於未來標準將會發生什麼的意見。 (你會期望他們向規範引入一個不向後兼容的變化嗎?) – Quentin
通過規範的快速搜索沒有發現任何與此相關的事情,但是我的猜測**是不能棄用參數但它不會受到任何新功能的支持。例如,該規範明確指出,其餘參數不會添加到參數對象中。如果你調用你的函數'fn(1,2,3)',那麼參數將是'{「0」:1,「1」:2 ...}'。 –