Rumah  >  Artikel  >  hujung hadapan web  >  Apakah kegunaan skop peringkat blok javascript?

Apakah kegunaan skop peringkat blok javascript?

青灯夜游
青灯夜游asal
2022-01-18 12:03:422911semak imbas

Peranan skop peringkat blok: menyelesaikan konflik penamaan yang disebabkan oleh terlalu banyak pembolehubah dan fungsi global. JavaScript akan menutup mata terhadap pengisytiharan berulang, mengakibatkan keputusan pelaksanaan yang salah boleh menyelesaikan masalah ini, membolehkan setiap pembangun menggunakan pembolehubahnya sendiri tanpa perlu risau tentang mengacaukan skop global.

Apakah kegunaan skop peringkat blok javascript?

Persekitaran pengendalian tutorial ini: sistem Windows 7, versi JavaScript 1.8.5, komputer Dell G3.

Apakah skop blok?

Sebarang set pernyataan dalam sepasang kurungan kerinting ({ dan }) tergolong dalam blok Semua pembolehubah yang ditakrifkan di dalamnya tidak kelihatan di luar blok kod, seperti untuk, manakala, jika

dan JavaScript tidak mempunyai skop peringkat blok (sebelum standard es6 keluar, JavaScript tidak mempunyai skop peringkat blok), iaitu, tentukan pembolehubah dalam blok kod JavaScript , pembolehubah masih boleh digunakan di luar blok kod, contohnya:

<script type="text/javascript">  
   var i=1;  
     if(i==1){  
        var b=2;  
     }  
   alert(b);//输出2  

   function outputNumbers(count){
       for(vari=0;i<count;i++){
           alert(i);
       }
           alert(i); //计数
    } 
</script>

Dalam bahasa​​​seperti Java dan C, pembolehubah i hanya akan ditakrifkan dalam blok pernyataan gelung for . Setelah gelung tamat, pembolehubah i akan dimusnahkan. Tetapi dalam JavaScript, pembolehubah i ditakrifkan dalam objek aktif outputNumbers(), jadi ia boleh diakses di mana-mana sahaja di dalam fungsi dari masa ia ditakrifkan.

Mengapa kita harus melaksanakan skop blok dalam JavaScript dan apakah kegunaannya?

Skop peringkat sekatan boleh menyelesaikan konflik penamaan yang disebabkan oleh terlalu banyak pembolehubah dan fungsi global, kerana JavaScript akan menutup mata kepada pengisytiharan berulang (namun, ia akan melakukan pemulaan pembolehubah dalam pengisytiharan berikutnya), menyebabkan hasil yang dijalankan Ada sesuatu yang tidak kena, dan anda mungkin perlu berusaha keras untuk menangkapnya.

Dalam aplikasi besar yang ditulis oleh banyak pembangun, penggunaan skop peribadi membolehkan setiap pembangun menggunakan pembolehubah mereka sendiri tanpa perlu risau tentang mengacaukan skop global.

Cara JavaScript melaksanakan skop peringkat blok

Walaupun tiada skop peringkat blok dalam js, fungsi penutupan/tanpa nama boleh digunakan untuk meniru skop peringkat blok.

Sintaks untuk fungsi tanpa nama dalam skop peringkat blok (selalunya dipanggil skop peribadi) adalah seperti berikut:

(function(){

  //这里是块级作用域

})();

Kod di atas mentakrifkan dan memanggil fungsi tanpa nama dengan serta-merta. Melampirkan pengisytiharan fungsi dalam sepasang kurungan menunjukkan bahawa ia sebenarnya adalah ungkapan fungsi. Sepasang kurungan lain yang mengikutinya akan segera memanggil fungsi ini.

Contoh penggunaan fungsi tanpa nama untuk melaksanakan skop peringkat blok dalam JavaScript

function outputNumbers(count){
   (function(){
      for(var i=0;i<count;i++){
          alert(i);
         }
        })();
    alert(i); //导致错误!
   }

Dalam contoh, sebarang pembolehubah yang ditakrifkan dalam fungsi tanpa nama akan dipadamkan pada penghujung perlaksanaan. Oleh itu, pembolehubah i hanya boleh digunakan dalam gelung dan dimusnahkan selepas digunakan. Kiraan pembolehubah boleh diakses dalam skop peribadi kerana fungsi tanpa nama ini ialah penutupan, yang boleh mengakses semua pembolehubah dalam skop yang mengandungi.

Bilakah anda boleh menggunakan skop peribadi

Tidak kira di mana anda memerlukan beberapa pembolehubah buat sementara waktu, anda boleh menggunakan skop peribadi

[Cadangan berkaitan:pembelajaran javascript tutorial

Atas ialah kandungan terperinci Apakah kegunaan skop peringkat blok javascript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn