溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

在JavaScript中var的缺點(diǎn)有哪些

發(fā)布時(shí)間:2021-06-30 09:18:57 來源:億速云 閱讀:443 作者:小新 欄目:web開發(fā)

這篇文章主要介紹在JavaScript中var的缺點(diǎn)有哪些,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

JavaScript中var存在的缺陷:1、var定義的變量沒有塊作用域;2、var定義的全局變量會(huì)自動(dòng)添加全局window對(duì)象的屬性;3、var定義的變量會(huì)提前裝載。

本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。

使用var定義變量可能存在如下問題:

  • var定義的變量沒有塊作用域。

  • var定義的全局變量會(huì)自動(dòng)添加全局window對(duì)象的屬性。

  • var定義的變量會(huì)提前裝載。

那么如何彌補(bǔ)var的缺陷?可以使用let關(guān)鍵字,let關(guān)鍵字的出現(xiàn)正好解決了上述問題

1.let定義的變量有塊作用域:

我們先來看代碼:

<script type="text/javascript">
	for(let i = 0;i < 10; i++){
		console.log(i);
	}
	console.log("循環(huán)體之外:" + i);//報(bào)錯(cuò):letScope.html:5 Uncaught ReferenceError: i is not defined
</script>

運(yùn)行結(jié)果:
在JavaScript中var的缺點(diǎn)有哪些
上面的程序在for循環(huán)中使用了let來定義循環(huán)計(jì)數(shù)器,這樣該循環(huán)計(jì)數(shù)器i將只在for循環(huán)中有效,因此程序在循環(huán)體之外訪問i變量就會(huì)報(bào)錯(cuò)。如果用var來定義i變量,則會(huì)將作用域擴(kuò)散到循環(huán)體外。

2.let定義的全局變量不會(huì)自動(dòng)添加到window對(duì)象的屬性:

我們?cè)倏匆粋€(gè)示例:

<script type="text/javascript">
	let name = '巴啦啦';
		console.log(name); //輸出巴啦啦
		console.log(window.name); //window.name不存在
</script>

運(yùn)行結(jié)果:

在JavaScript中var的缺點(diǎn)有哪些
上面代碼使用let定義一個(gè)全局變量name,但與使用var定義全局變量不同的是,使用let定義的全局變量不會(huì)變成window對(duì)象的屬性,所以運(yùn)行上面程序訪問window.name時(shí),看不到任何輸出。

3.let定義的變量不會(huì)提前裝載:

看如下示例:

<script type="text/javascript">
	var name = '巴啦啦';
	function func(){
		console.log(name);
		let name = 'fkit';
		console.log(name);
	}
	func();
</script>

運(yùn)行結(jié)果:

在JavaScript中var的缺點(diǎn)有哪些

使用let定義的變量要等到程序流執(zhí)行到定義變量的代碼行時(shí)才會(huì)轉(zhuǎn)載。

上面程序先定義了一個(gè)全局變量name,接下來程序再func()函數(shù)中使用let定義了同名的name變量,此時(shí)局部變量name會(huì)覆蓋全局的name變量。但由于使用let定義的變量不會(huì)提前裝載,因此func()函數(shù)在使用let定義局部變量name之前訪問name變量會(huì)導(dǎo)致錯(cuò)誤-----如果將func()函數(shù)中定義name變量的關(guān)鍵字改為var,則會(huì)有不同的效果。

修改后運(yùn)行結(jié)果如下:

在JavaScript中var的缺點(diǎn)有哪些

以上是“在JavaScript中var的缺點(diǎn)有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI