js變數的作用範圍

2021-09-28 19:38:58 字數 2887 閱讀 3304

前言:寫著寫著專案,看著日益繁多的js變數,突然對js變數的作用範圍產生了興趣,所以來研究一下,鑑於本人主要是搞後端的,這個主要是入門級js變數範圍介紹.

目錄

第一章 不同script塊中的js變數

1.1 先定義

1.2 後定義

1.3.1 另一種定義方式

第二章 定義在js檔案中的變數

2.1 先定義

2.2 後定義

2.2.1 另一種定義方式

第三章 js塊中的函式

3.1 不同js塊中的函式先定義再使用

3.2 不同js塊中的函式先使用再定義

3.3 同一塊中的js函先使用再定義

3.4 同一塊中的js函式先定義再使用

第四章 js檔案中的函式

4.1 先定義再使用

4.2 先使用再定義

4.3 同一js塊中函式互相呼叫

第五章 結論

5.1 js檔案的引入

5.2 js變數函式作用規則

5.2.1 if,for中變數作用域

結果:6

結論:會影響

結果:c is not defined

結論:定義了才能使用

結果:c is not defined

結論:定義了才能使用

結果:輸出c

結論:會影響

結果:輸出c

結論:會影響

結果:c未定義

結論:定義了才能使用

結果:c未定義

結論:定義了才能使用

結果:c未定義

結論:定義了才能使用

結果:輸出c

結論:會影響

結果:out未定義

結論:定義了才能使用

結果:輸出c

結論:會影響

結果:輸出c

結論:會影響

可以看到在乙個塊中,函式並不需要遵循定義在前才可以使用的原則,定義在後面的函式也能被呼叫.

結果:輸出c

結論:會影響

結果:out未定義

結論:定義了才能使用

可以看到out2函式定義早於out1

結果:輸出c

結論:會影響

注:自己的推斷不一定對

感覺js所謂的引入就相當於把js檔案的**匯入在引入的位置中,是因為某個js塊的**太多,所以寫在了外部.

例如:

等於

在js塊中,全域性變數可以作用於所有的js塊,但是必須遵循先定義再使用的原則.

其實會有變數提公升和函式提公升,會打破這個原則,這裡我們只是初步學習,所以不說這個,感興趣的可以去看

區域性變數只作用於當前作用域,如只作用在function.如果在function中使用變數不加var,那麼此變數會變成全域性變數.

可以參考

同乙個塊中,函式不必遵循定義再使用的原則,先定義的函式可以呼叫後定義的函式,不同塊中要遵循先定義後使用

簡單解釋下:

執行一段js**時:

js引擎會先掃瞄整個js**,把所有全域性變數都繫結到window物件上,包括函式和變數的定義。此時,window上就有了函式和值為undefined

參考:在js中,只有函式作用域,沒有塊級作用域!!!也就是說,if/for等有{}的結構體,並不能具備自己的作用域。

下面的**中,b是全域性變數.

變數的作用範圍

1.類中所有變數的預設修飾符是private。2.區域性變數必須先初始化才能使用,全域性變數 類的成員變數 可以不初始化,預設值為0 1 static void main string args 212 else 1316 17console.readkey 18 1920 static int n...

變數的作用範圍

看標題我們就差不多明白了整個意思 其實變數的作用範圍很簡單 就一句話 變數只能在當前大括號以及子括號內使用 這東西看起來不太好理解 在此分別列舉了三種情況 1.變數定義在main方法的括號內 2.定義在main方法的子括號內 3.定義在乙個自定義的方法內 也分別在三個地方嘗試去使用這個變數 1.ma...

C 中變數的作用範圍 可見範圍

作用域為當前 塊,即 中。在 塊外部不可見。區域性靜態變數,即在 塊中宣告的靜態變數,作用域為當前 塊,超過該 塊則不可見 static int a 0 void test 2.類靜態成員變數,作用域為當前類,超出類範圍則不可見 static int a class test 3.全域性靜態變數,不...