Bedane antarane batal lan ora ditemtokake ing JavaScript
Referensi
JavaScriptPanggunaan khas nol
Minangka paramèter fungsi, tegese paramèter fungsi dudu obyek
function myFn(obj) {
if(null == obj) {
// code
}
}
Minangka pungkasan rantai prototipe obyek
Object.getPrototypeOf(Object.prototype);
Nalika ngeculake variabel, pilih nol menyang variabel
let o={
code:'abc'
};
o = null;
Panggunaan khas sing durung ditemtokake
Variabel kasebut dinyatakake nanging ora diwenehake, regane variabel durung ditemtokake
let o;
console.log(o); //undefined
Parameter sing kudu diwenehake fungsi ora diwenehake nalika nelpon, mula nilai parameter sing ora diwenehake ora ditemtokake
function myFn(o) {
console.log(o);
}
myFn(); //undefined
Properti sing ora ana obyek, regane durung ditemtokake
let o={
code:'abc'
};
console.log(o.name); //undefined
Yen fungsi ora ngasilake regane, bakal bali ora ditemtokake minangka standar
function myFn(obj) {
obj = 'a';
}
console.log(myFn()); //undefined
Persamaan antara batal lan ora ditemtokake
Salah yen diowahi dadi boolean
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
Bedane batal lan ora ditemtokake
Asilé beda nalika diowahi dadi nomer. Asil konversi nol yaiku angka angka valid 0, lan asil konversi sing durung ditemtokake yaiku NaN.
console.log(Number(null)); // 0
console.log(Number(undefined)); // NaN
Kaloro jinis kasebut beda, jinis nol yaiku obyek, lan jinis sing durung ditemtokake ora ditemtokake.
console.log(typeof null); //object
console.log(typeof undefined); //undefined
mbandhingake batal lan ora ditemtokake
Kanggo mbedakake antarane sing mbatalake lan ora ditemtokake, mung bisa digunakake kongruensi. Ing kongruensi, bakal mbandhingake manawa rong jinis kasebut padha.
console.log(Boolean(null == undefined)); // true
console.log(Boolean(null === undefined)); // false
kanggo nyimpulake
Sawise mbandhingake ing ndhuwur, kita duwe pangerten sing jelas babagan rong jinis kasebut. Biasane, nalika kita mutusake manawa variabel duwe nilai sing valid nalika nulis kode, kita ora prelu mbedakake, mula digunakake minangka jinis Boolean. Nanging yen kudu milih manawa properti kasebut ana, kita kudu nggunakake jinis kasebut kanthi ketat kanggo menehi penilaian sing durung ditemtokake. Pungkasan, yen kita ngetrapake angka angka, kita kudu mutusake dhisik, lan ora bisa langsung dikirim menyang jinis angka, yen ora bakal nyebabake kita entuk asil sing ora normal, lan ora ditemtokake bakal langsung ngetung NaN asil sing ora valid.