Tujuannya adalah bahwa jika suatu variabel dinyatakan tidak ditugaskan, dapat ditetapkan secara langsung; dan ruang lingkup variabel tidak dapat diubah.
Jika tidak dinyatakan, redeclare itu.
Saya mencari secara online dan menemukan bahwa metode umum adalah jika (typeof (a) == 'tidak terdefinisi') {var a = 'ss';},
Namun, metode ini akan kembali benar untuk variabel yang tidak dideklarasikan atau tidak ditugaskan. Dan jika demikian:
Salinan kode adalah sebagai berikut:
var a;
fungsi f () {
if (typeof (a) == 'tidak terdefinisi')
{var a = 1;}
}
F();
console.log (a);
Tidak terdefinisi akan ditampilkan karena f () baru saja menyatakan variabel lokal dengan nama yang sama.
Namun, jika itu adalah variabel yang telah dinyatakan tidak ditugaskan: jika (novaluev == null), itu akan mengembalikan true;
Variabel yang tidak diumumkan: if (nodeclarev == null), kesalahan akan dilaporkan.
Jadi bisa jadi:
Salinan kode adalah sebagai berikut:
fungsi f () {
if (typeof (v) == 'tidak terdefinisi') {
mencoba{
if (v == null) // menunjukkan bahwa v dinyatakan tidak ditugaskan
V = 1; // Jika V adalah variabel global, itu tidak akan mengubah cakupannya
}
Catch (err) {// menunjukkan bahwa V tidak dinyatakan
var v; v = 2;
}
}
console.log (v);
}
F( );
Ini juga salah, karena JS memiliki karakteristik 'mendeklarasikan uang muka', yaitu variabel yang dinyatakan dalam fungsi tersebut terlihat dalam fungsi ini dan dalam subfungsi fungsi ini, di mana pun ia dinyatakan dalam fungsi.
Jadi karena var V di atas, dalam hal apa pun, Anda hanya mencoba.
Memodifikasinya:
Salinan kode adalah sebagai berikut:
fungsi f () {
if (typeof (v) == 'tidak terdefinisi') {
mencoba{
if (v == null) // menunjukkan bahwa v dinyatakan tidak ditugaskan
V = 1; // Jika V adalah variabel global, itu tidak akan mengubah cakupannya
}
Catch (err) {// menunjukkan bahwa V tidak dinyatakan
eval ('var v'); v = 2; // berbeda di sini
}
}
console.log (v);
}
F( );
Itu saja.
Ditulis sebagai fungsi penilaian, mengembalikan 'nodeclare' berarti bahwa variabel tidak dinyatakan, 'novalue' berarti bahwa variabel telah dinyatakan tidak ditugaskan, dan 'hasvalue' berarti bahwa variabel telah dinyatakan ditetapkan:
Salinan kode adalah sebagai berikut:
fungsi f (v) {
if (typeof (v) == 'tidak terdefinisi') {
mencoba{
if (v == null)
mengembalikan 'novalue';
}
Catch (err) {
mengembalikan 'nodeclare';
}
}
lain mengembalikan 'hasvalue';
}
var a;
console.log (f (a));
a = 0;
console.log (f (a));
console.log (f (b));
Itu salah lagi ..... akan ada kesalahan saat console.log (f (b)); ...