ES6默认参数未在参数中定义

时间:2017-03-02 14:40:56

标签: ecmascript-6

默认参数未分配给参数Array,如Object:

function fn(test = "test") { 
 console.log(arguments); //[]
}

这可能仅用于了解用户传递给函数的内容,但它似乎也很棘手 这会改变吗?

1 个答案:

答案 0 :(得分:3)

不,这不会改变。

实际上它已经做了更改 - 以前arguments对象上的每个索引都被映射到相应的参数变量以进行读写(这是一个恐怖的原因!)。这被证明具有破坏性的性能影响,因为它阻止了大量的引擎优化,并且在ES5中被弃用(但是,出于兼容性原因,仅在新的严格模式下)。在ES6中,如果他们在参数列表中使用新的ES6功能(如解构,默认初始化器或休息语法),则在草率模式函数中也不推荐使用该行为。

arguments对象是just a simple object,其中包含传递给函数的参数值。请注意,默认值不会传递,它只是在函数体开头初始化变量的语法糖。
如果映射到范围变量,则为much more complicated