默认参数未分配给参数Array,如Object:
function fn(test = "test") {
console.log(arguments); //[]
}
这可能仅用于了解用户传递给函数的内容,但它似乎也很棘手 这会改变吗?
答案 0 :(得分:3)
不,这不会改变。
实际上它已经做了更改 - 以前arguments
对象上的每个索引都被映射到相应的参数变量以进行读写(这是一个恐怖的原因!)。这被证明具有破坏性的性能影响,因为它阻止了大量的引擎优化,并且在ES5中被弃用(但是,出于兼容性原因,仅在新的严格模式下)。在ES6中,如果他们在参数列表中使用新的ES6功能(如解构,默认初始化器或休息语法),则在草率模式函数中也不推荐使用该行为。
arguments
对象是just a simple object,其中包含传递给函数的参数值。请注意,默认值不会传递,它只是在函数体开头初始化变量的语法糖。
如果映射到范围变量,则为much more complicated。