中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

javascript使用var聲明變量的問題怎么解決

發布時間:2022-08-09 16:22:05 來源:億速云 閱讀:167 作者:iii 欄目:web開發

這篇文章主要介紹了javascript使用var聲明變量的問題怎么解決的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇javascript使用var聲明變量的問題怎么解決文章都會有所收獲,下面我們一起來看看吧。

javascript使用var聲明變量的問題怎么解決

聲明變量的問題

  • 使用var聲明變量(允許重復變量聲明:導致數據被覆蓋)

變量的提升

  • 怪異數據訪問

  • 閉包問題

  • 在函數的變量會提升到最頂部

  • 在全局作用域的變量也會提升到最頂部

JavaScript中的var聲明變量的缺陷

  • 未聲明卻可以使用(var聲明的變量會預編譯或者說是變量提示),這不符合邏輯。

  • 同一個變量可以被多次聲明,但是嚴謹來說,一個變量被聲明一次之后,后面便只能對它修改而不是聲明。也不符合邏輯。

  • for循環中的循環參數可以在循環外使用(for循環被污染),而超出了最初主要控制循環的作用。不符合邏輯。

  • 沒有塊級作用域。

我們來舉例看一下

//首先判斷生成一個隨機數當隨機數小于0.5時聲明a賦值為‘abc’
//然后輸出a

if (Math.random() < 0.5){
	var a = 'abc';
	console.log(a);
}
//如果不是那么輸出a
else {
	console.log(a)
}

console.log(a);

這里就有一個很嚴重的問題讓我們來讀一下:

首先判斷生成一個隨機數當隨機數小于0.5時聲明a且輸出a

然后如果不小于0.5也輸出a

那么這個a實際上是不存在的因為遇到了變量提升問題導致全局作用域有了一個a,這樣雖然能讀到但是因為這個變量提升就導致全局作用域被污染了。

在正常看來這似乎沒有問題但是將這串代碼放在其他任何語言上寫出類似的代碼他必定會報錯同時也因為這個問題導致他在一定程度上對大型應用的吃力。

讓我們再來看看閉包問題:

//選中div
var div = document.getElementByTd('div');
//我這里創建10個按鈕并添加進代碼里

for (var i = 1; 1 < 10; i ++){
	var btn = document.createElement('button');
	btn.innerHTML = '按鈕' + i;
	div.appendChild(btn);
	//添加點擊事件點擊按鈕時輸出對應的i
	btn.onclick = function () {
		console.log(i);
	}
}
//但是當點擊輸出時所有的按鈕都為11
//原因是當在for聲明變量i時遇到了變量提升就導致了來來回回更改的就只有這一個i
//而當我們點擊時for早已循環完所以循環完成時i = 11;就輸出也是11了
//
//一般我們的解決辦法是將點擊事件上寫一個立即執行函數執行完刪除方可正常運行

全局變量掛載到全局對象:全局對象成員污染問題

var abc = "123"
console.log(abc);
//可以正常輸出對吧,這就導致了一個問題
//我可以將abc掛載到window上如果說我要寫很多的代碼那就會導致全局變量污染

//然后我給console賦值
var console = "abc";
console.log(console);
//然后再輸出console會報錯
//因為我對window的console進行了覆蓋所以會報錯

這就是原來的JS所遇到的各種問題和不方便的地方

關于“javascript使用var聲明變量的問題怎么解決”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“javascript使用var聲明變量的問題怎么解決”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

灌阳县| 上虞市| 句容市| 枝江市| 南城县| 东兰县| 桂平市| 察隅县| 陇南市| 连州市| 茌平县| 临泉县| 庄河市| 马关县| 涟源市| 凤城市| 定兴县| 隆昌县| 吴桥县| 香格里拉县| 北碚区| 福建省| 嘉峪关市| 永胜县| 清水河县| 钟祥市| 镇雄县| 新营市| 永吉县| 西乌珠穆沁旗| 子洲县| 长阳| 花莲县| 屏东市| 陇南市| 连山| 沁源县| 伊宁县| 沽源县| 高邑县| 屏东县|