Skop JavaScript

Skop JavaScript

Dalam JavaScript, objek dan fungsi juga pembolehubah.

Dalam JavaScript, skop ialah koleksi pembolehubah, objek dan fungsi yang boleh diakses.

Skop fungsi JavaScript: Skop diubah suai dalam fungsi.


Dalam JavaScript, pembolehubah yang diisytiharkan dengan var sebenarnya mempunyai skop.

Jika pembolehubah diisytiharkan di dalam badan fungsi, skop pembolehubah ialah keseluruhan badan fungsi dan pembolehubah tidak boleh dirujuk di luar badan fungsi:

'gunakan ketat '; function foo () {
var x = 1;
x = x + 1;
}

x = x + 2; // ReferenceError! 🎜> di luar badan fungsi

Jika dua fungsi berbeza mengisytiharkan pembolehubah yang sama, pembolehubah hanya akan berfungsi dalam badan fungsi masing-masing. Dalam erti kata lain, pembolehubah dengan nama yang sama di dalam fungsi yang berbeza adalah bebas antara satu sama lain dan tidak menjejaskan satu sama lain:

'use strict';function foo() { var x = 1 ;
x = x + 1;
}bar fungsi() {
var x = 'A';
x = x + 'B';
}

Skop Setempat JavaScript

Pembolehubah diisytiharkan dalam fungsi dan pembolehubah adalah skop setempat.

Pembolehubah setempat: hanya boleh diakses di dalam fungsi.

// Pembolehubah carName tidak boleh dipanggil di sini
function myFunction() {
var carName = "Volvo";
// Pembolehubah carName boleh dipanggil dalam fungsi
}

Nota:

Oleh kerana pembolehubah tempatan hanya bertindak dalam fungsi, fungsi yang berbeza boleh menggunakan pembolehubah dengan nama yang sama.

Pembolehubah setempat dicipta apabila fungsi mula dilaksanakan, dan ia akan dimusnahkan secara automatik selepas fungsi tersebut dilaksanakan.

Skop global

Pembolehubah yang tidak ditakrifkan dalam mana-mana fungsi mempunyai skop global. Sebenarnya, JavaScript mempunyai tetingkap objek global secara lalai, dan pembolehubah dalam skop global sebenarnya terikat pada sifat tetingkap:

'gunakan ketat';

var course = 'Learn JavaScript';

alert(course); // 'Learn JavaScript'

alert(window. course); // 'Belajar JavaScript'

Oleh itu, mengakses terus kursus pembolehubah global adalah sama seperti mengakses window.course.

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>php中文网(php.cn)</title> 
</head>
<body>
<p>全局变量在任何脚本和函数内均可访问。</p>
<p id="demo"></p>
<script>
var carName = "Volvo";
myFunction();
function myFunction() 
{
    document.getElementById("demo").innerHTML =
"这里是 " + carName;
}
</script>
</body>
</html>

Kitaran hayat pembolehubah JavaScript

Kitaran hayat pembolehubah JavaScript dimulakan apabila ia diisytiharkan.

Pembolehubah setempat dimusnahkan selepas fungsi dilaksanakan.

Pembolehubah global dimusnahkan selepas halaman ditutup.

Parameter fungsi

Parameter fungsi hanya berfungsi dalam fungsi dan merupakan pembolehubah setempat.


Meneruskan pembelajaran
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> var a =1; function test(){ alert(a); //a为undefined! 这个a并不是全局变量,这是因为在function scope里已经声明了(函数体倒数第4行)一个重名的局部变量, //所以全局变量a被覆盖了,这说明了Javascript在执行前会对整个脚本文件的定义部分做完整分析,所以在函数test()执行前, //函数体中的变量a就被指向内部的局部变量.而不是指向外部的全局变量. 但这时a只有声明,还没赋值,所以输出undefined。 a=4 alert(a); //a为4,没悬念了吧? 这里的a还是局部变量哦! var a; //局部变量a在这行声明 alert(a); //a还是为4,这是因为之前已把4赋给a了 } test(); alert(a); //a为1,这里并不在function scope内,a的值为全局变量的值 </script> </head> <body> </body> </html>
  • Cadangan kursus
  • Muat turun perisian kursus