توضيح واحد JavaScript النطاق بشأن الصفحة 199 من "JavaScript القابلة للصيانة" لنيكولاس

StackOverflow https://stackoverflow.com/questions/20353171

  •  25-08-2022
  •  | 
  •  

سؤال

في الملحق أ ، الصفحة 199 ، عند مناقشة استخدام "استخدام صارم" ، فإن الأمر يسير على هذا النحو:

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

//good
(function() {
    "use strict";

    function doSomething() {
        // code
    }

    function doSomethingElse() {
        // code
    }

}());

سؤالي هو ، إذا كان هذا هو ما تبدو عليه الوظيفة المعتمدة بأكملها ، فربما لا يوجد أي تأثير (على البقية) لاستدعاءها على الفور؟ نظرًا لأن وظيفتين فقط يتم الإعلان عنهما داخل الوظيفة المجهولة ، لكن لا يتم استدعاؤهما من الداخل (لذلك لا يمكن للوظيفة أن تجعل أي آثار جانبية لبقية العالم) ، ولا تعود إلى الخارج حتى تضيع مراجعهما.

ربما ، أريد فقط أن أؤكد ، أن مقتطف الكود يهدف فقط إلى إظهار استخدام "استخدام صارم" ، لذلك قام ببساطة بحذف المكالمات إلى هذه الوظيفة أو عودتها؟

شكرًا،

/بروين

هل كانت مفيدة؟

المحلول 2

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

var myModule = (function() {
    "use strict";

    function doSomething() {
        // code
    }

    function doSomethingElse() {
        // code
    }

    return {
        doSomething: doSomething,
        doSomethingElse: doSomethingElse
    };

}());

myModule.doSomething();
myModule.doSomethingElse();

نصائح أخرى

الفكرة هي أن iife يرفق الكل من الكود الخاص بك ، وليس فقط تلك الوظائف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top