Sobes.tech
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