Menurut dokumentasi MDN tentangundefined
:
Di browser modern (JavaScript 1.8.5 / Firefox 4+), undefined adalah properti yang tidak dapat dikonfigurasi, tidak dapat ditulis sesuai dengan spesifikasi ECMAScript 5. Bahkan ketika ini bukan masalahnya, hindari menimpanya.
Salah satu atribut properti yang tidak terdefinisi adalah yang tidak dapat ditulis.
Tetapi jika saya lakukan:
var undefined = 'hello';
var test = undefined;
console.log(typeof test);
//string
Apakah itu berarti saya dapat menimpa nilai undefined
? Apa yang terjadi jika seseorang melakukan itu? Haruskah JavaScript memperingatkan tentang itu?
javascript
typeof
pmiranda
sumber
sumber
typeof test === "undefined"
)typeof undefined
kembali"undefined"
dalam keadaan normal."undefined"
adalah sebuah string. Pertanyaannya bukan menanyakan apa yangtypeof (typeof undefined)
dievaluasi. Ia bertanya apa yangtypeof undefined
dievaluasi. Ia kembali"undefined"
, bukan"string"
typeof ______
adalah ekspresi yang mengevaluasi string yang berisi tipe______
. Anda salah mengerti pertanyaan itu.Jawaban:
Komentar yang dihapus oleh Amy memberikan solusi. Anda membuat variabel bernama
undefined
, dan itu tidak berfungsi jika Anda membuat cuplikan Anda di lingkup global:Tapi itu efektif jika Anda melakukannya dalam lingkup lokal di mana undefined tidak lagi merujuk ke variabel global:
Untuk mencegah kesalahan ini, Anda dapat menggunakan
'use strict';
arahan:Jika Anda menulis kode di mana Anda tidak dapat mengontrol di mana itu akan dieksekusi (misalnya perpustakaan, embed, dll) itu adalah pola yang baik untuk menggunakan IIFE yang membuatnya sehingga Anda dapat menjamin bahwa undefined akan selalu benar / dapat digunakan. Berikut ini sebuah contoh:
Semua pengujian saya dibuat menggunakan Firefox 72.0b10 (64 bit) di Ubuntu, dan hasil untuk cuplikan pertama mungkin berbeda di browser yang lebih lama.
sumber
let indefinido= dataArray( (a) => (anotherArray.includes(someName)));
kami sedang memeriksa apakah var itu 'tidak terdefinisi' (hasilfind
tanpa elemen ditemukan) atau tidak. Lalu dia menerjemahkanindefinido
keundefined
saya melihat bahwa saya mengujinya di Chrome dan Edge, melihat beberapa perbedaan. Itu sebabnya saya datang ke sini untuk meminta pendapat yang lain, karena saya juga belajar.void 0
Sumber https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/undefined
undefined
adalah tidak disediakan karena itu adalah mungkin untuk menetapkan nilai baru.Ketika Anda tidak menggunakan
strict mode
Anda pada dasarnya membuat variabel yang disebutundefined
dalam lingkup lokal dan memberikanstring
nilai padanya.undefined
adalah properti dari objek global . Nilai awal yang tidak terdefinisi adalah nilai primitifundefined
.use strict
akan membantu mencegah kesalahan ini dalam lingkup global sementara itu masih bisa ditimpa dalam lingkup lokal.Jika Anda ingin lebih aman, Anda harus menggunakannya
void 0
daripadaundefined
selalu kembaliundefined
.sumber
undefined
dengan membacanya sebagai argumen. Karena IIFE tidak pernah mengeluarkan argumen apa pun di sini, mereka akan beradaundefined
di dalamnya. Misalnya((undefined) => console.log(typeof undefined))()