Ես ES6-ում որոշ քանդում էի և բախվեցի անսպասելի իրավիճակի: Ահա տեղի ունեցածի մանրացված վարկածը:
let obj = {x: {y: 5}};
let {x: {y}} = obj;
console.log(x); // x is not defined
console.log(y); // 5
Իմ օգտագործման դեպքում ինձ անհրաժեշտ էր մուտք գործել և՛ x
, և՛ y
: Ես կսպասեի, որ x
-ը նույնպես քանդված կլիներ: Փոխարենը, ցանկալի էֆեկտ ստանալու համար ես ստիպված էի անել հետևյալը.
let obj = {x: {y: 5}};
let {x, x: {y}} = obj;
console.log(x); // {"y":5}
console.log(y); // 5
Այնուամենայնիվ, կարծում եմ, {x, x: {y}}
-ը տարօրինակ և ոչ ինտուիտիվ տեսք ունի: Կա՞ ինչ-որ ապակառուցողական գաղտնիք, որի մասին ես տեղյակ չեմ, թե՞ սա պարզապես քանդող փոքր որոգայթ է:
let y = 5; let obj = {x: {y}};
-ը չի փորձում կարդալx
՝ բանալին ստանալու համար, ապակառուցվածքը չի փորձում գրելx
փոփոխականի վրա: 30.07.2016let {x, x: {y}}
-ի հետ, բայց դեռ նախընտրում եմlet {x} = obj; let {y} = x
-ը, պարզապես այն ճիշտ է թվում: 30.07.2016