- 寫在前面:參考嗶哩嗶哩黑馬程式員pink老師教程
- 地址:https://www.bilibili.com/video/BV1Sy4y1C7ha?t=41&p=4
目錄
作用域
作用域概述
全域作用域
區域作用域 (函式作用域)
JS 沒有塊級作用域
變數的作用域
變數作用域的分類
全域變數
區域變數
全域變數和區域變數的區別
作用域鏈
作用域
作用域概述
- 通常來說,一段程式代碼中所用到的名字并不總是有效和可用的,而限定這個名字的可用性的代碼范圍就是這個名字的作用域,
- 作用域的使用提高了程式邏輯的區域性,增強了程式的可靠性,減少了名字沖突,
- JavaScript(es6前)中的作用域有兩種:
- 全域作用域
- 區域作用域(函式作用域)
全域作用域
- 作用于所有代碼執行的環境(整個 script 標簽內部)或者一個獨立的 js 檔案,
區域作用域 (函式作用域)
- 作用于函式內的代碼環境,就是區域作用域, 因為跟函式有關系,所以也稱為函式作用域,
JS 沒有塊級作用域
- 塊作用域由 { } 包括,
- 在其他編程語言中(如 java、c#等),在 if 陳述句、回圈陳述句中創建的變數,僅僅只能在本 if 陳述句、本回圈陳述句中使用,如下面的Java代碼:
if(true){ int num = 123; system.out.print(num); // 123 } system.out.print(num); // 報錯
- Js中沒有塊級作用域(在ES6之前),
if(true){ var num = 123; console.log(123); //123 } console.log(123); //123變數的作用域
變數作用域的分類
- 在JavaScript中,根據作用域的不同,變數可以分為兩種:
- 全域變數
- 區域變數
全域變數
- 在全域作用域下宣告的變數叫做全域變數(在函式外部定義的變數),
- 全域變數在代碼的任何位置都可以使用
- 在全域作用域下 var 宣告的變數 是全域變數
- 特殊情況下,在函式內不使用 var 宣告的變數也是全域變數(不建議使用)
區域變數
- 在區域作用域下宣告的變數叫做區域變數(在函式內部定義的變數)
- 區域變數只能在該函式內部使用
- 在函式內部 var 宣告的變數是區域變數
- 函式的形參實際上就是區域變數
全域變數和區域變數的區別
- 全域變數:在任何一個地方都可以使用,只有在瀏覽器關閉時才會被銷毀,因此比較占記憶體
- 區域變數:只在函式內部使用,當其所在的代碼塊被執行時,會被初始化;當代碼塊運行結束后,就會被銷毀,因此更節省記憶體空間
作用域鏈
- 只要是代碼,就至少有一個作用域
- 寫在函式內部的區域作用域
- 如果函式中還有函式,那么在這個作用域中就又可以誕生一個作用域
- 根據在內部函式可以訪問外部函式變數的這種機制,用鏈式查找決定哪些資料能被內部函式訪問,就稱作作用域鏈
- 案例 1: 結果是幾?
function f1() { var num = 123; function f2() { console.log( num ); } f2(); } var num = 456; f1();
- 作用域鏈:采取就近原則的方式來查找變數最終的值,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/74284.html
標籤:其他
上一篇:教你使用BitMoken交易所
下一篇:海伯利安-dex-defi的思考

