Ini adalah tugas yang merusak objek. Seperti saya, Anda mungkin merasa terkejut karena objek ES6 yang merusak sintaks terlihat seperti, tetapi TIDAK berperilaku seperti konstruksi literal objek.
Ini mendukung formulir yang sangat singkat yang Anda temui, serta mengganti nama bidang dan argumen default:
Pada dasarnya, ini adalah {oldkeyname: newkeyname = defaultvalue, ...}. ':' BUKAN pemisah kunci / nilai; '=' adalah.
Beberapa dampak dari keputusan desain bahasa ini adalah Anda mungkin harus melakukan hal-hal seperti itu
; ({a, b} = some_object);
Tanda kurung ekstra mencegah kurung kurawal buka parsing sebagai blok, dan tanda titik koma mencegah tanda kurung diurai sebagai panggilan fungsi ke fungsi pada baris sebelumnya.
Untuk info lebih lanjut lihat:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
Hati-hati, kesalahan kunci selama tugas penghancuran objek JANGAN dilempar; Anda hanya akan mendapatkan nilai "tidak ditentukan", apakah itu kesalahan kunci atau kesalahan lain yang secara diam-diam disebarkan sebagai 'tidak ditentukan'.
> var {rsienstr: foo, q: bar} = {p:1, q:undefined};
undefined
> foo
undefined
> bar
undefined
>