كيفية تدمير كائن للمتغيرات الموجودة في JavaScript

كانت لدي هذه المشكلة. كنت أستدعي وظيفة للحصول على بعض البيانات:

const doSomething = () => {
  return { a: 1, b: 2 }
}

const { a, b } = doSomething()

ولكن كان لدي حاجة لف هذا في ملفifحظر لتنفيذ هذا الخط فقط إذا تم تسجيل دخول المستخدم ، مما يؤدي إلى نقل ملفconstإعلان داخلifجعل هذه المتغيرات غير مرئية خارج تلك الكتلة.

لذلك أردت الإعلان عن هذه المتغيرات أولاً ، كمتغيرات غير محددة ، ثم تحديثها عندما تأتي البيانات.

الجزء الاول سهل:

let a, b

يأتي الخيار "الصعب" بعد ذلك ، لأننا نزيل ملفconstقبل إتلاف الكائن ، لكننا نحتاج أيضًا إلى لف كل السطر إلى أقواس:

let a, b

const doSomething = () => { return { a: 1, b: 2 } }

if (/* my conditional */) { ({ a, b } = doSomething()) }

بالإضافة إلى ذلك ، إذا كنت مثلي ولا تحب استخدام الفاصلة المنقوطة ، فأنت بحاجة إلى إضافة فاصلة منقوطةقبلالخط ، لمنع المشكلات المحتملة مع وجود الأقواس (ويجب على Prettier إضافته تلقائيًا لك أيضًا ، إذا كنت تستخدمه):

let a, b

const doSomething = () => { return { a: 1, b: 2 } }

if (/* my conditional */) { ;({ a, b } = doSomething()) }

هذا مطلوب تمامًا مثلما نحتاج إلى القيام بذلك عندما يكون لدينا IIFE (تعبير وظيفي يتم استدعاؤه بشكل فوري) مثل هذا:

;(() => {
  //...
})()

لمنع جافا سكريبت من التسبب في إرباك الشفرة في سطور منفصلة ولكن لا تنتهي بفواصل منقوطة.


المزيد من دروس js: