Nó là một phép gán cấu trúc đối tượng. Giống như tôi, bạn có thể thấy ngạc nhiên vì cú pháp cấu trúc đối tượng ES6 trông giống như vậy, nhưng KHÔNG hoạt động giống như cấu trúc theo nghĩa đen của đối tượng.
Nó hỗ trợ biểu mẫu ngắn gọn mà bạn đã chạy, cũng như đổi tên các trường và đối số mặc định:
Về cơ bản, đó là {oldkeyname: newkeyname = defaultvalue, ...}. ':' KHÔNG phải là dấu phân cách khóa / giá trị; '=' là.
Một số hậu quả của quyết định thiết kế ngôn ngữ này là bạn có thể phải làm những việc như
; ({a, b} = some_object);
Các parens bổ sung ngăn các dấu ngoặc nhọn bên trái phân tích cú pháp như một khối và dấu chấm phẩy ở đầu ngăn các parens được phân tích cú pháp như một lời gọi hàm đến một hàm trên dòng trước đó.
Để biết thêm thông tin, hãy xem:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destosystem_assignment
Hãy cẩn thận, các lỗi chính trong quá trình gán cấu trúc đối tượng KHÔNG được ném ra; bạn chỉ nhận được các giá trị "không xác định", cho dù đó là lỗi chính hay một số lỗi khác được truyền âm thầm là "không xác định".
> var {rsienstr: foo, q: bar} = {p:1, q:undefined};
undefined
> foo
undefined
> bar
undefined
>