具有对象表示法的javascript函数参数

Sea*_*ean 5 javascript parameters function

之间有什么区别

function updateSomething(item) {}
Run Code Online (Sandbox Code Playgroud)

和

function updateSomething({items}) {}
Run Code Online (Sandbox Code Playgroud)

?第一个中的item变量也可以是对象,为什么第二个中使用对象符号?我什么时候应该使用前一个和后一个?

Den*_*ret 5

这是从ES2015开始的参数分解。在第二种情况下,您正在将局部变量初始化为items参数的属性值。

function updateSomething({items}) {
Run Code Online (Sandbox Code Playgroud)

大致相当于

function updateSomething(obj) {
     var items = obj.items;
Run Code Online (Sandbox Code Playgroud)

其他一些例子在这里和这里。

从MDN:从作为函数参数传递的对象中提取字段

请注意,这个语法是尚未边缘或Safari(查看可用的兼容地图),所以你可能需要使用像transpiler 巴贝尔。