Rumah > hujung hadapan web > Soal Jawab bahagian hadapan > Contoh terperinci menerangkan kelemahan menggunakan var untuk mengisytiharkan pembolehubah

Contoh terperinci menerangkan kelemahan menggunakan var untuk mengisytiharkan pembolehubah

WBOY
Lepaskan: 2022-08-09 16:01:26
ke hadapan
1779 orang telah melayarinya

Artikel ini membawa anda pengetahuan yang berkaitan tentang javascript Ia terutamanya memperkenalkan isu berkaitan penggunaan var yang tidak mencukupi untuk mengisytiharkan pembolehubah membolehkan pengisytiharan pembolehubah berulang, menyebabkan data menjadi Liputan, mari lihat di bawah, semoga bermanfaat untuk semua.

Contoh terperinci menerangkan kelemahan menggunakan var untuk mengisytiharkan pembolehubah

[Cadangan berkaitan: tutorial video javascript, bahagian hadapan web]

Masalah dengan mengisytiharkan pembolehubah

  • Isytiharkan pembolehubah menggunakan var (membenarkan pendua pengisytiharan pembolehubah: menyebabkan data ditimpa)

Promosi pembolehubah

  • Akses data yang pelik
  • Masalah penutupan

  • Pembolehubah dalam fungsi akan dinaikkan ke atas
  • Pembolehubah dalam skop global juga akan dinaikkan kepada atas

Kecacatan var pengisytiharan pembolehubah dalam JavaScript

  • Boleh digunakan tanpa mengisytiharkan (var Pembolehubah yang diisytiharkan akan dikompilasi atau pembolehubah dibayangkan), yang tidak logik.

  • Pembolehubah yang sama boleh diisytiharkan beberapa kali, tetapi secara tegasnya, selepas pembolehubah diisytiharkan sekali, ia hanya boleh diubah suai dan bukannya diisytiharkan kemudian. Tak logik juga.

  • Parameter gelung dalam gelung for boleh digunakan di luar gelung (gelung for tercemar) melebihi gelung kawalan utama asal. Tak logik.

  • tiada skop blok.

Mari kita ambil contoh

//首先判断生成一个随机数当随机数小于0.5时声明a赋值为‘abc’
//然后输出a

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

console.log(a);
Salin selepas log masuk

Ada masalah yang sangat serius di sini ia:

Mula-mula tentukan dan jana nombor rawak Apabila nombor rawak kurang daripada 0.5, isytiharkan a dan keluarkan a

Kemudian jika ia tidak kurang daripada 0.5, ia juga mengeluarkan a

Maka ini a sebenarnya tidak wujud kerana skop global mempunyai a kerana masalah promosi berubah-ubah Walaupun ia boleh dibaca, skop global tercemar kerana promosi berubah-ubah.

Biasanya, ini nampaknya tiada masalah, tetapi jika anda meletakkan rentetan kod ini dalam mana-mana bahasa lain dan menulis kod yang serupa, dia pasti akan melaporkan ralat Pada masa yang sama, kerana masalah ini, dia akan bergelut dengan aplikasi yang besar pada tahap tertentu.

Mari kita lihat semula masalah penutupan:

//选中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了
//
//一般我们的解决办法是将点击事件上写一个立即执行函数执行完删除方可正常运行
Salin selepas log masuk

Pembolehubah global dipasang pada objek global: Masalah pencemaran ahli objek global

var abc = "123"
console.log(abc);
//可以正常输出对吧,这就导致了一个问题
//我可以将abc挂载到window上如果说我要写很多的代码那就会导致全局变量污染

//然后我给console赋值
var console = "abc";
console.log(console);
//然后再输出console会报错
//因为我对window的console进行了覆盖所以会报错
Salin selepas log masuk

Ini ialah pelbagai masalah dan kesulitan yang dihadapi oleh JS asal

[Cadangan berkaitan: tutorial video javascript, bahagian hadapan web

Atas ialah kandungan terperinci Contoh terperinci menerangkan kelemahan menggunakan var untuk mengisytiharkan pembolehubah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:csdn.net
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan