關於js中的全域性變數和區域性變數

2022-06-13 23:09:22 字數 837 閱讀 7506

在學習js的變數作用域時,發現的一些奇怪現象。記錄如下:

1

//全域性變數:在全域性作用域下的變數2//

區域性變數:在函式內部宣告的變數3//

注意:4

//1、在函式內部沒有var宣告直接賦值的變數也是全域性變數5//

2、當變數名重複時,選擇就近原則訪問

6var num0 = 0;

7var num1 = 10;

8function

f4()

24f4();

25 console.log(num0);//

026 console.log(num1);//

1027 console.log(num2); //

error

28 console.log(num3); //

3029 console.log(num4); //

error

後來發現這是由於js的預解析處理模式導致的。

js引擎執行js分為兩步:預解析+**執行

1、預解析:js引擎會把js裡面的所有的var(變數解析)和function(函式解析)提公升到當前作用域的最前面;

2、**執行:順序執行

如:f5(); //預解析後,在函式上面也可呼叫,這在python中可不行哦。

function f5()

f5();

f6();//報錯

var f6 = function () ;

f6();

相當於:

var f6;

f6();

f6 = function () {

關於全域性變數和區域性變數

1.區域性變數能否和全域性變數重名?答 能,區域性會遮蔽全域性。要用全域性變數,需要使用 區域性變數可以與全域性變數同名,在函式內引用這個變數時,會用到同名的區域性變數,而不會用到全域性變數。對於有些編譯器而言,在同乙個函式內可以定義多個同名的區域性變數,比如在兩個迴圈體內都定義乙個同名的區域性變數...

js中的全域性變數和區域性變數

如何查詢全域性變數 最外層的函式和和最外層函式外面的變數都是全域性變數。因為函式是可以巢狀的,所以找全域性變數時,要找最外層函式 而且函式本身也是乙個變數,特殊變數,其名字就是變數名。沒有用 var宣告的變數,為全域性變數,即使位置在函式體內部 所有window物件的屬性也是全域性變數。var v ...

全域性變數和區域性變數

全域性變數 可以被不同的函式 類或檔案呼叫的變數,在函式外定義。區域性變數 只能在函式內使用,定義在函式內。區域性變數的使用 class myclass def myfun num 12 print myfun num num 正確 def myfun2 num num 1 print mufun ...