Junior
შეგიძლიათ დეტალურად ახსნათ null და undefined შორის განსხვავებები JavaScript-ში?
sobes.tech AI
პასუხი AI-სგან
-
undefined:- ცვლადებს მიენიჭება, რომლებიც გამოცხადებულია, მაგრამ მნიშვნელობა არ არის ინიციალიზებული.
- ფუქნციის პარამეტრებისთვის არის მნიშვნელობა, როდესაც არგუმენტები არ გადაეცემა.
- მიიღება, როდესაც ცდილობთ დაუკავშირდეთ არარსებულ თვისებას ობიექტზე ან მასივის ელემენტზე.
- მონაცემთა ტიპი —
undefined.
-
null:- არის სპეციალური მნიშვნელობა, რომელიც პირდაპირ მიენიჭება ცვლადს, რათა აღნიშნოს "მნიშვნელობის არარსებობა".
- წარმოადგენს მიზანმიმართულად არარსებულ ობიექტს ან პრიმიტიულ მნიშვნელობას.
- მონაცემთა ტიპი —
object(ეს არის JavaScript-ის ისტორიული შეცდომა, მაგრამ ასეა).
ძირითადი განსხვავებები სქემაში:
| მახასიათებელი | undefined |
null |
|---|---|---|
| წარმოშობა | არაპირდაპირი (ძირითადი) | პირდაპირი (დეველოპერმა მიენიჭა) |
| დანიშნულება | გამოცხადებულია, მაგრამ მნიშვნელობა არ არის მინიჭებული | მიზანმიმართულად არარსებული მნიშვნელობა |
მონაცემთა ტიპი (typeof) |
undefined |
object |
| Boolean კონტექსტი | false |
false |
თანხვედრა (==) |
null == undefined (სინამდვილეში) |
null == undefined (სინამდვილეში) |
თანხვედრა (===) |
null === undefined (სინამდვილეში) |
null === undefined (სინამდვილეში) |
მაგალითი:
let a; // გამოცხადებულია, მაგრამ არ არის ინიციალიზებული -> undefined
console.log(a); // undefined
const obj = {};
console.log(obj.prop); // არარსებული თვისების წვდომა -> undefined
function greet(name) {
console.log(name);
}
greet(); // პარამეტრი არ არის გადაცემული -> undefined
let b = null; // მიზანმიმართულად მიენიჭა null
console.log(b); // null
let c = {};
c.data = null; // თვისებას მიენიჭა null
console.log(c.data); // null
console.log(typeof a); // undefined
console.log(typeof b); // object
console.log(null == undefined); // true
console.log(null === undefined); // false