Untuk variabel lokal, pemeriksaan dengan localVar === undefined
akan berfungsi karena mereka harus didefinisikan di suatu tempat dalam lingkup lokal atau mereka tidak akan dianggap lokal.
Untuk variabel yang tidak lokal dan tidak didefinisikan di mana saja, pemeriksaan someVar === undefined
akan membuang pengecualian: Uncaught ReferenceError: j tidak didefinisikan
Berikut adalah beberapa kode yang akan menjelaskan apa yang saya katakan di atas. Harap perhatikan komentar sebaris untuk kejelasan lebih lanjut .
function f (x) {
if (x === undefined) console.log('x is undefined [x === undefined].');
else console.log('x is not undefined [x === undefined.]');
if (typeof(x) === 'undefined') console.log('x is undefined [typeof(x) === \'undefined\'].');
else console.log('x is not undefined [typeof(x) === \'undefined\'].');
// This will throw exception because what the hell is j? It is nowhere to be found.
try
{
if (j === undefined) console.log('j is undefined [j === undefined].');
else console.log('j is not undefined [j === undefined].');
}
catch(e){console.log('Error!!! Cannot use [j === undefined] because j is nowhere to be found in our source code.');}
// However this will not throw exception
if (typeof j === 'undefined') console.log('j is undefined (typeof(x) === \'undefined\'). We can use this check even though j is nowhere to be found in our source code and it will not throw.');
else console.log('j is not undefined [typeof(x) === \'undefined\'].');
};
Jika kita memanggil kode di atas seperti ini:
f();
Outputnya akan seperti ini:
x is undefined [x === undefined].
x is undefined [typeof(x) === 'undefined'].
Error!!! Cannot use [j === undefined] because j is nowhere to be found in our source code.
j is undefined (typeof(x) === 'undefined'). We can use this check even though j is nowhere to be found in our source code and it will not throw.
Jika kita memanggil kode di atas seperti ini (dengan nilai sebenarnya):
f(null);
f(1);
Outputnya adalah:
x is not undefined [x === undefined].
x is not undefined [typeof(x) === 'undefined'].
Error!!! Cannot use [j === undefined] because j is nowhere to be found in our source code.
j is undefined (typeof(x) === 'undefined'). We can use this check even though j is nowhere to be found in our source code and it will not throw.
Ketika Anda melakukan pemeriksaan seperti ini:, typeof x === 'undefined'
Anda pada dasarnya menanyakan ini: Harap periksa apakah variabel x
ada (telah ditentukan) di suatu tempat dalam kode sumber. (lebih atau kurang). Jika Anda tahu C # atau Java, jenis pemeriksaan ini tidak pernah dilakukan karena jika tidak ada, itu tidak akan dikompilasi.
<== Fiddle Me ==>