[劉陽Java]_步步窺探JS變量作用域
阿新 • • 發佈:2018-06-08
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變量作用域