教育行業A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

JS全局變量和局部變量的區別

更新時間:2021年10月08日15時28分 來源:傳智教育 瀏覽次數:

好口碑IT培訓

通過前面的學習,我們知道變量需要先聲明后使用,但這并不意味著聲明變量后就可以在任意位置使用該變量。例如,在函數中聲明一個age變量,在函數外進行訪問,就會出現age變量未定義的錯誤,示例代碼如下。

function info(){
	var age = 18;
}
info();
console.log (age);		//報錯,提示 age is not defined( age未定義)

從上述代碼可以看出,變量需要在它的作用范圍內才可以被使用,這個作用范圍稱為變量的作用域。JavaScript根據作用域使用范圍的不同,將其劃分為全局作用域、函數作用域和塊級作用域(ES6提供的)。上述示例聲明的age變量只能在info()函數體內才可以使用。

接下來我們針對JavaScript中不同作用域內聲明的變量進行介紹。

1.全局變量:不在任何函數內聲明的變量(顯式定義)或在函數內省略var聲明的變量(隱式定義)都稱為全局變量,在任何地方都可以訪問到的變量就是全局變量,全局變量所在的區域就是全局作用域。

2.局部變量:只在固定的代碼片段內可訪問到的變量,最常見的例如函數內部的變量,就是局部變量。局部變量所在的區域就是局部作用域(函數作用域)。

3.塊級變量:ES6提供的let關鍵字聲明的變量稱為塊級變量,僅在“{}”中間有效,如if、for或while語句等。

對于初學者來說,重點是理解全局變量和局部變量的區別,而塊級變量和let關鍵字屬于ES6的新增內容。

全局變量和局部變量

下面我們通過代碼演示全局變量和局部變量的區別,具體代碼如下。

//全局作用域
var num = 10;
//全局變量
function fn(){
	//局部作用域
	var num = 20;	//局部變量
	console.log(num);	//輸出局部變量num的值,輸出結果:20
}
fn();
console.log(num);	//輸出全局變量10的值,輸出結果:10

在上述代碼中,全局變量num和局部變量num雖然名稱相同但具它們百不影響,在fn()函數外獲取的num的值為10,在fn()函數內獲取到的num的值為20。需要注意的是,函數中的變量如果省略var關鍵字,它會白動向上級作田城杏找變量,一直找到全局作用域為止。示例代碼如下。

function fn(){
	num2=20;
}
fn();
console.log(num2);	//輸出結果:20

在上述代碼中,fn()函數中的“num2 = 20:”使得程序首先會在fn()函數的局部作用域中查找是否存在num2變量,如果不存在,則到上級作用域,也就是全局作用域中查找。由于在全局作用域中也沒有num2變量,此時就會在全局作用域下創建一個全局變量num2。

通過以上對比可以看出,在全局作用域下,添加或省略var關鍵字都可以聲明全局變量;而在函數中,添加var關鍵字聲明的變量是局部變量,省略var關鍵字時,如果變量在當前作用域下不存在,會自動向上級作用域查找變量。局部變量只能在函數內部使用,函數的形參也屬于局部變量。從執行效率來說,全局變量在瀏覽器關閉頁面的時候才會銷毀,比較占用內存資源;而局部變量在函數執行完成后就會銷毀,比較節約內存資源。



猜你喜歡:

var、let、const聲明變量的區別

JS變量教程:JavaScript中變量的用法詳解

變量是什么?JavaScript變量的命名聲明與賦值講解

JavaScript變量命名規范介紹

傳智教育HTML&JS+前端高手班

0 分享到:
红豆直播app黄台_红豆直播app下载免费_红豆直播app下载