Jadual Kandungan
Hanya terdapat skop global dan skop fungsi dalam Es5
Skop peringkat blok boleh difahami secara ringkas sebagai: kandungan yang disertakan dalam kurungan kerinting {}, Ia boleh menjadi skopnya sendiri. Pembolehubah dalam skop peringkat blok diisytiharkan oleh let dan const
Rumah hujung hadapan web Soal Jawab bahagian hadapan Apakah perbezaan antara skop es5 dan es6

Apakah perbezaan antara skop es5 dan es6

Apr 11, 2022 pm 02:56 PM
es5 es6 Skop

Perbezaan: Terdapat hanya dua jenis skop dalam es5: skop global dan skop fungsi, manakala terdapat tiga jenis skop dalam es6: skop global, skop fungsi dan skop peringkat blok, dengan yang baharu ditambah Skop peringkat blok. Peranan skop peringkat blok: Ia boleh menyelesaikan masalah pembolehubah luar yang ditimpa disebabkan oleh promosi pembolehubah skop dalaman, dan menghalang pembolehubah yang digunakan untuk pengiraan gelung daripada bocor ke dalam pembolehubah global.

Apakah perbezaan antara skop es5 dan es6

Persekitaran pengendalian tutorial ini: sistem windows7, ECMAScript versi 6, komputer Dell G3

Skop es5 dan es6 Perbezaan:

  • Hanya terdapat dua jenis skop dalam es5: skop global dan skop fungsi

  • Skop dalam es6 Terdapat tiga jenis: skop global, skop fungsi dan skop peringkat blok

Hanya terdapat skop global dan skop fungsi dalam Es5

ES5 Gunakan var untuk isytiharkan pembolehubah. Pembolehubah yang diisytiharkan dengan var mungkin wujud dalam skop global atau dalam skop tempatan adalah seperti berikut

1 Tiga kes mempunyai skop global

a. Pembolehubah yang diisytiharkan di luar fungsi mempunyai skop global

b c. Sifat objek tetingkap mempunyai skop global



2. Skop setempat (skop fungsi)

Skop pembolehubah dalam badan fungsi

Pembolehubah yang ditakrifkan dalam fungsi hanya boleh diakses dalam fungsi


  • Contoh

Skop peringkat blok baharu dalam Es6

  var a = 1;
  console.log(a);// 1                  此处a为全局变量,在全局作用域下都可访问得到

  b = 2
  console.log(b); // 2                 此处b未被var定义,而是被直接赋值,自动声明为全局变量
  
  function fun() {
    var c = 3;
    console.log(c);//3                 此处c存在在函数作用域中,仅在函数fun中可访问
  }
  fun()
  console.log(c);// undefined         全局作用域下访问函数作用域中的变量c,得到undefined
Salin selepas log masuk

Skop peringkat blok boleh difahami secara ringkas sebagai: kandungan yang disertakan dalam kurungan kerinting {}, Ia boleh menjadi skopnya sendiri. Pembolehubah dalam skop peringkat blok diisytiharkan oleh let dan const

Mengapa skop peringkat blok diperlukan?

1 Selesaikan masalah bahawa promosi pembolehubah skop dalaman menyebabkan pembolehubah luar ditimpa

Hasil pelaksanaan

var i = 5;
function fun(){
  console.log(i);//undefined
  if(true){
    var i = 6
    console.log(i);//6
  }
}
fun()
Salin selepas log masuk
Pembolehubah i dalam keseronokan fungsi diisytiharkan menggunakan var Ini melibatkan isu promosi pembolehubah Yang dipanggil promosi pembolehubah bermaksud pengisytiharan fungsi dan pengisytiharan pembolehubah sentiasa "dinaikkan pangkat" ke bahagian atas. badan kaedah oleh jurubahasa. Jadi i di sini adalah bersamaan dengan mencapai bahagian atas fungsi fun terlebih dahulu, tetapi tugasan masih dilakukan apabila i = 6. Kod di atas sebenarnya bersamaan dengan:


Apakah perbezaan antara skop es5 dan es6Apabila i yang pertama adalah Semasa mencetak , i hanya diisytiharkan tetapi tidak diberikan (i diberikan nilai 6 dalam pernyataan if), jadi i yang dicetak pertama tidak ditentukan, dan cetakan i kedua ialah 6

var i = 5;
function fun(){
  var i;
  console.log(i);
  if(true){
    i = 6
    console.log(i)
  }
}
fun()
Salin selepas log masuk
Jika anda menggunakan let untuk mengisytiharkan pembolehubah i dalam jika, pendakap kerinting { } di mana pernyataan if terletak akan membentuk skop peringkat blok, dan pembolehubah yang diisytiharkan dalam skop ini akan "terikat" di kawasan ini, dan tidak akan Ia terus terjejas oleh pengaruh luaran (iaitu zon mati sementara), jadi keluaran i pertama apabila melaksanakan fungsi keseronokan ialah var i=5 dalam skop global, dan output i dalam pernyataan if dibiarkan i diisytiharkan dalam skop peringkat blok =6

var i = 5;
function fun(){
  console.log(i);//5
  if(true){
    let i = 6
    console.log(i);//6
  }
}
fun()
Salin selepas log masuk
2. Halang pembolehubah yang digunakan untuk pengiraan gelung daripada bocor ke dalam pembolehubah global

Kod di atas mengisytiharkan pembolehubah i dengan var untuk gelung, keadaan ideal Perkara berikut i seharusnya hanya sah dalam badan gelung, tetapi i di sini didedahkan dalam skop global, jadi nilai i masih boleh diakses dalam skop global selepas gelung berakhir

for(var i = 0; i < 3; i++){
  doSomething()
}
console.log(i)//3
Salin selepas log masuk
Untuk contoh Gunakan let dengan skop peringkat blok untuk mengisytiharkan i Pembolehubah i yang diisytiharkan di sini hanya sah dalam kurungan kerinting untuk gelung { }. >

Ciri skop peringkat blok
for(let i = 0; i < 3; i++){
  console.log(i)
}
console.log(i)//undefined
Salin selepas log masuk

1 Pembolehubah yang diisytiharkan oleh let hanya sah dalam skop (pada masa ini dalam kurungan kerinting), jadi Sebarang sarang. dibenarkan, dan setiap tahap adalah skop yang berasingan 2 Skop dalam boleh mempunyai nama yang sama dengan pembolehubah skop luar (tiada skop digunakan tanpa mengganggu antara satu sama lain)

3. let Hanya boleh wujud pada tahap atas skop semasa

Nota: dalam { } in if pernyataan dan untuk pernyataan, jika terdapat pembolehubah/pemalar yang diisytiharkan oleh let atau const, skop { } juga tergolong kepada skop blok

Contoh tentang skop

[Cadangan berkaitan:

tutorial video javascript
,

bahagian hadapan web

]
<script type="text/javascript">
	{
		var a = 1;
		console.log(a); // 1
	}
	console.log(a); // 1
	// 可见,通过var定义的变量可以跨块作用域访问到。

	(function A() {
		var b = 2;
		console.log(b); // 2
	})();
	// console.log(b); // 报错,
	// 可见,通过var定义的变量不能跨函数作用域访问到

	if(true) {
		var c = 3;
	}
	console.log(c); // 3
	for(var i = 0; i < 4; i++) {
		var d = 5;
	};
	console.log(i);	// 4   (循环结束i已经是4,所以此处i为4)
	console.log(d); // 5
	// if语句和for语句中用var定义的变量可以在外面访问到,
	// 可见,if语句和for语句属于块作用域,不属于函数作用域。

	{
		var a = 1;
		let b = 2;
		const c = 3;	
		
		{
			console.log(a);		// 1	子作用域可以访问到父作用域的变量
			console.log(b);		// 2	子作用域可以访问到父作用域的变量
			console.log(c);		// 3	子作用域可以访问到父作用域的变量

			var aa = 11;
			let bb = 22;
			const cc = 33;
		}
		
		console.log(aa);	// 11	// 可以跨块访问到子 块作用域 的变量
		// console.log(bb);	// 报错	bb is not defined
		// console.log(cc);	// 报错	cc is not defined
	}
</script>
Salin selepas log masuk

Atas ialah kandungan terperinci Apakah perbezaan antara skop es5 dan es6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Penggunaan typedef struct dalam bahasa c Penggunaan typedef struct dalam bahasa c May 09, 2024 am 10:15 AM

typedef struct digunakan dalam bahasa C untuk mencipta alias jenis struktur untuk memudahkan penggunaan struktur. Ia alias jenis data baharu kepada struktur sedia ada dengan menentukan alias struktur. Faedah termasuk kebolehbacaan yang dipertingkatkan, penggunaan semula kod dan pemeriksaan jenis. Nota: Struktur mesti ditakrifkan sebelum menggunakan alias itu mestilah unik dalam program dan hanya sah dalam skop di mana ia diisytiharkan.

Bagaimana untuk menyelesaikan pembolehubah yang diharapkan dalam java Bagaimana untuk menyelesaikan pembolehubah yang diharapkan dalam java May 07, 2024 am 02:48 AM

Pengecualian nilai jangkaan pembolehubah dalam Java boleh diselesaikan dengan: memulakan pembolehubah menggunakan nilai nol menggunakan semakan dan tugasan;

Kelebihan dan kekurangan penutupan dalam js Kelebihan dan kekurangan penutupan dalam js May 10, 2024 am 04:39 AM

Kelebihan penutupan JavaScript termasuk mengekalkan skop pembolehubah, membolehkan kod modular, pelaksanaan tertunda, dan keburukan pengendalian peristiwa termasuk kebocoran memori, peningkatan kerumitan, overhed prestasi dan kesan rantaian skop.

Apa yang termasuk bermakna dalam c++ Apa yang termasuk bermakna dalam c++ May 09, 2024 am 01:45 AM

Arahan prapemproses #include dalam C++ memasukkan kandungan fail sumber luaran ke dalam fail sumber semasa, menyalin kandungannya ke lokasi yang sepadan dalam fail sumber semasa. Digunakan terutamanya untuk memasukkan fail pengepala yang mengandungi pengisytiharan yang diperlukan dalam kod, seperti #include <iostream> untuk memasukkan fungsi input/output standard.

Petunjuk pintar C++: analisis komprehensif kitaran hayat mereka Petunjuk pintar C++: analisis komprehensif kitaran hayat mereka May 09, 2024 am 11:06 AM

Kitaran hayat penunjuk pintar C++: Penciptaan: Penunjuk pintar dicipta apabila memori diperuntukkan. Pemindahan pemilikan: Pindahkan pemilikan melalui operasi pemindahan. Keluaran: Memori dikeluarkan apabila penunjuk pintar keluar dari skop atau dikeluarkan secara eksplisit. Pemusnahan objek: Apabila objek runcing dimusnahkan, penunjuk pintar menjadi penunjuk tidak sah.

Bolehkah definisi fungsi dan panggilan dalam C++ bersarang? Bolehkah definisi fungsi dan panggilan dalam C++ bersarang? May 06, 2024 pm 06:36 PM

boleh. C++ membenarkan definisi dan panggilan fungsi bersarang. Fungsi luaran boleh menentukan fungsi terbina dalam, dan fungsi dalaman boleh dipanggil terus dalam skop. Fungsi bersarang meningkatkan enkapsulasi, kebolehgunaan semula dan kawalan skop. Walau bagaimanapun, fungsi dalaman tidak boleh mengakses pembolehubah tempatan fungsi luaran secara langsung, dan jenis nilai pulangan mesti konsisten dengan pengisytiharan fungsi luaran Fungsi dalaman tidak boleh rekursif sendiri.

Terdapat beberapa situasi di mana ini dalam js menunjuk ke Terdapat beberapa situasi di mana ini dalam js menunjuk ke May 06, 2024 pm 02:03 PM

Dalam JavaScript, jenis penunjuk ini termasuk: 1. Objek global 2. Panggilan fungsi; 4. Pengendali acara; Selain itu, penunjuk kepada ini boleh ditetapkan secara eksplisit menggunakan kaedah bind(), call(), dan apply().

Perbezaan antara let dan var dalam vue Perbezaan antara let dan var dalam vue May 08, 2024 pm 04:21 PM

Dalam Vue, terdapat perbezaan dalam skop apabila mengisytiharkan pembolehubah antara let dan var: Skop: var mempunyai skop global dan let mempunyai skop peringkat blok. Skop peringkat blok: var tidak mencipta skop peringkat blok, mari buat skop peringkat blok. Pengisytiharan Semula: var membenarkan pembolehubah diisytiharkan semula dalam skop yang sama, jangan biarkan.

See all articles