تناقش هذه المقالة الفرق بين VAR ولا VAR في JavaScript. يعتمد نطاق التصريحات المتغيرة في JS على وظائف ، لذلك نرى غالبًا كيفية تجنب التلوث المتغير العالمي.
(وظيفة(){ // ... })()؛داخل وظيفة ، تختلف المتغيرات مع var وبدون VAR. هناك Vars التي تعلن عن المتغيرات المحلية ، ولا توجد متغيرات عالمية معلنة ، بحيث يمكنك فضح أشياء الواجهة إلى الخارج.
عند إعلان المتغيرات في النطاق العالمي ، يبدو Var و Var متماثلاً. نحن نعلم أن المتغيرات العالمية المعلنة هي خصائص Windows. سواء كانت متماثلة ، فإننا نكتشف الفرق من خلال طريقة الاستعلام السمة التي توفرها ECMASCRPIT5.
var ffff = 2 ؛ window.fffa = 3 ؛ FFB = 4 ؛ this.ffc = 4 ؛ var fftx = object.getownPropertyDescriptor (window ، 'ffff') ؛ // configable: false ، enumeries: true ، value: 2 ، crandable: true var ffatx = object.getownProperTyDescriptor (window ، 'fffa') ؛ // configable: true ، enumeries: true ، value: 2 ، crandable: true var ffbtx = object.getownProperTyDescriptor (window ، 'fffa') ؛ // configable: true ، enumeries: true ، value: 2 ، crandable: true var ffbtx = object.getownProperTyDescriptor (window ، 'ffb') ؛ // configable: true ، enumeries: true ، value: 2 ، crandable: true var ffctx = object.getOntOndPropertyDescriptor (window ، 'ffc') ؛ // قابلة للتكوين: صواب ، تعداد: صواب ، القيمة: 2 ، قابلة للكتابة: صواب
من خلال ما سبق ، وجدنا أنه لا يزال هناك فرق. استخدمنا حذف للتحقق من أنه لا يمكن حذف السمة مع التكوين الخاطئة. أي أن خصائص الكائن العالمي المعلن من خلال المتغير لا يمكن حذفها. سنجد أيضًا أنه لا يمكن حذف خصائص الكائن العالمي الذي تم إنشاؤه بواسطة إعلان الوظيفة.
حذف FFFF ؛ لا يمكن حذف حذف FFFA ؛ // يمكن حذف حذف FFB ؛ // يمكن حذف حذف FFC ؛ // يمكن حذف
الاستنتاج هو أن هناك فرقًا بين إضافة VAR وإعلان المتغيرات العالمية بدون VAR.
إنه قانوني وغير ضار لإعلان بيان باستخدام بيان VAR بشكل متكرر. إذا تم تكرار الإعلان وتم توفير المهمة ، فلا يختلف الأمر عن بيان المهمة العامة. إذا حاولت قراءة متغير لم يتم الإعلان عنه ، فسيقوم JS بالإبلاغ عن خطأ.
تكون المتغيرات المعلنة أو الوظائف الداخلية في نطاق JavaScript مرئيًا في جسم الوظيفة. بمعنى ، قد تكون الوظيفة متاحة بالفعل قبل تعريفها. هناك طريقتان لتحديد وظيفة ، واحدة هي تعبير تعريف الوظيفة ، والآخر هو بيان إعلان الوظيفة.
// تعريف الوظيفة التعبير var fns = function () {// ...} ؛ // دالة بيانات إعلان الوظيفة fns () {// ...}تم تطوير بيان إعلان الوظيفة "إلى أعلى البرنامج النصي الخارجي أو نطاق الوظيفة الخارجي ، لذلك يمكن استدعاء وظيفة تم إعلانها بهذه الطريقة بواسطة الرمز الذي يظهر قبله مرة أخرى. في تعبيرات تعريف الوظيفة ، يكون إعلان المتغير متقدمًا ، لكن تعيين المتغير غير متقدم ، لذلك لا يمكن استدعاء الوظائف المحددة في التعبير قبل تعريف الوظيفة.
(function () {testa () ؛ // print out testa testb () ؛ // الإبلاغ عن خطأ: يُطلب من أن غير محدد ليس وحدة تحكم دالة. "testc" ؛بالطبع ، عندما نعلن المتغيرات والوظائف ، يجب أن نلتزم بالمواصفات الأساسية ، ويجب أن تكون المتغيرات وإعلانات الوظيفة مسبقًا.