- JavaScript前端開發基礎教程
- 呂云翔 歐陽植昊 張遠等編著
- 821字
- 2021-10-27 17:00:54
2.1.4 變量的作用域
同其他編程語言一樣,JavaScript的變量同樣,擁有作用域,如果在作用域外使用變量會獲取不到變量,以至于產生錯誤。同樣,JavaScript的變量也分為全局變量和局部變量兩種類型。
1)全局變量:在函數外定義的變量,可以在所有的HTML文件和腳本中使用,例如:

這段代碼可以在控制臺輸出“a+b、a、b”,輸出如圖2.3所示。

圖2.3 樣例輸出2.3
2)局部變量:在函數內聲明的變量,只能在局部范圍(函數內部)使用,例如:

這段代碼可以在控制臺輸出“a+b”但是輸出“a”“b”時會報錯,輸出如圖2.4所示。

圖2.4 樣例輸出2.4
3)不加var或者let聲明的變量:在2.1.3節中介紹過,不加var或者let聲明的變量實際上是給Window對象添加了一個不可配置的屬性,既然它是整個瀏覽器窗口的屬性,那它一定是可以作用于整個頁面的,因此即使不在函數作用域中用var關鍵字聲明,該變量也是全局變量,例如:

這段代碼可以成功輸出“a+b”“a”“b”,輸出如圖2.5所示。

圖2.5 樣例輸出2.5
4)代碼塊中使用var關鍵字定義的變量:代碼塊一般指的是花括號中包含的語句。最常見的代碼塊是if和for語句中的語句塊,而這些語句塊中的變量指的是在這些代碼塊中用var關鍵字定義的變量,這些變量是可以在代碼塊外的作用域內起作用的,例如:

這段代碼能夠正確輸出“i”和“sum”的值,輸出如圖2.6所示。

圖2.6 樣例輸出2.6
值得注意的是,代碼塊中的函數只能在其代碼塊所在的作用域內使用。如果代碼塊位于函數中,則聲明的變量為局部變量,只能在本函數中使用。而用let聲明的函數只能在代碼塊中生效,在代碼塊以外是不能生效的。
5)var和let的區別:let關鍵字是在ES6的JavaScript中新規定的關鍵字,其目的是解決var關鍵字的一些缺陷,可以認為是更規范、更先進的var。let縮小了var的作用域,用let聲明的變量只能在代碼塊中生效,在代碼塊以外的范圍是不能生效的,否則使用時會報錯。

輸出如圖2.7所示。

圖2.7 樣例輸出2.7
用let定義的關鍵字在作用域外是不能被調用的,否則就會報錯。而且用let定義的變量是不存在變量提升現象的,關于變量提升在后面的章節中將會詳細介紹。
- .NET之美:.NET關鍵技術深入解析
- 流量的秘密:Google Analytics網站分析與優化技巧(第2版)
- Learning RxJava
- Visual Basic程序設計(第3版):學習指導與練習
- 深度學習:算法入門與Keras編程實踐
- Linux Device Drivers Development
- 精通MATLAB(第3版)
- Android開發案例教程與項目實戰(在線實驗+在線自測)
- Apache Spark 2.x for Java Developers
- Java網絡編程實戰
- Mastering C++ Multithreading
- QGIS 2 Cookbook
- IoT Projects with Bluetooth Low Energy
- Visual Basic程序設計基礎
- Parallel Programming with Python