1. 程式人生 > >[劉陽Java]_步步窺探JS變量作用域

[劉陽Java]_步步窺探JS變量作用域

div strong javascrip gen doc not cee 定義 light

今天的這個文章題目名稱甚是讓人會突發異想。JS變量作用域是務必需要搞懂的,單從面試過程就會讓面試者燒腦殼。所以,我們還是寫一篇關於JS變量作用域的技術專題,讓所有小夥伴能夠借此文章去整理JS的基礎學習。說不定很多人會比我理解這方面基礎知識有更好地見解

黃金守則第一條: JS沒有塊級作用域(你可以自己閉包或其他方法實現),只有函數級作用域,函數外面的變量函數裏面可以找到,函數裏面的變量外面找不到

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus?">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
  <script>
	var a = 10;
	function m01() {
		alert(a);
	}
	function m02() { // 嘗試通過m02方法去改變變量a的值
		var a = 20;
		m01();
	}
	m02();
  </script>
 </head>
 <body>
 </body>
</html>

  技術分享圖片

黃金守則第一條原理:因為在方法m02裏面定義變量a是局部變量,它不會影響最外面的var a = 10; 的值

黃金守則第二條:在函數裏面定義變量 var a = b = 10; 其實a是局部變量,b是全局變量。此程序的坑實在是難以讓程序員們接受

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus?">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>
  <script>
	function m01() {
		var a = b = 10;	
	}
	m01();
	// alert(a); 運行這段代碼就報錯; Uncaught ReferenceError: a is not defined
	alert(b);
  </script>
 </head>
 <body>
 </body>
</html>

技術分享圖片

[劉陽Java]_步步窺探JS變量作用域