Javascript之全域性變數和區域性變數

2021-09-11 15:26:38 字數 850 閱讀 3822

關於全域性變數和區域性變數的一句簡單的定義:在函式外宣告的變數都為全域性變數,在函式內宣告的為區域性變數。

一、區域性變數和全域性變數重名會覆蓋全域性變數

var a = 1;  

function

test1

()

test1();// 2

複製**

這裡的函式中的定義的a是區域性變數,它的作用域為函式{}之間,函式外定義的a為全域性變數,它的作用域為整個程式(描述有點不準確)。在函式中的區域性變數和全域性變數重名,區域性變數會覆蓋全域性變數。

二、提到全域性變數與區域性變數不得不說明的乙個知識點就是**變數提公升**。『與c/c++逐行執行**不同,js引擎的工作方式是,先獲取所有被宣告的變數再逐一執行,所有變數的宣告語句都會被提公升到當前**塊的頭部』。注:**塊指的是function的乙個{},通常的if、while、for的{}中變數不會提公升。

了解了變數提公升了之後我們用以下**來演示:

var a = 1;  

function

test1

()

test1();

alert(a);//undefined 2 1

複製**

為什麼結果不是1 2 1呢?原因就在於**提公升。由於**提公升的效果所以實際執行的**是這樣的:

var a = 1;  

function

test1

()

test1();

alert(a);//undefined 2

複製**

結語

JavaScript之全域性變數和區域性變數

全域性變數可以在js指令碼的任何地方被引用,一旦某個指令碼宣告了乙個全域性變數,則該變數的作用域就是整個指令碼 區域性變數只存在於它做出宣告的函式內部,函式外部無法引用它,區域性變數的作用域僅限於某個特定函式 函式內部既可以用區域性變數又可以用全域性變數,如果某個函式中使用var宣告,則那個變數就被...

static全域性變數 全域性變數

1 全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同。這兩者的區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是...

Matlab之全域性變數

通過全域性變數可以實現matlab工作空間變數空間和多個函式的函式空間的共享,這樣,多個使用全域性變數的函式和matlab工作空間共同維護這一全域性變數,任何一處對全域性變數的修改,都會直接改變此全域性變數的取值。在應用全域性變數事,通常在各個函式內部通過global variable語句宣告,在命...