====== Null vs Undefined ====== **null** and **undefined** are both special values that indicate the absence of a value. However, they are used in slightly different contexts and have some differences in behavior. ===== Null ===== **null** is a value that represents **no value or no object**. \\ It is an assignment value that represents the ;;;intentional absence of any object value.;;; \\ You can explicitly assign null to a variable to indicate that the variable should have no value. \\ Comparing with **loose equality ==, null is equal to undefined.** ===== Undefined ===== **undefined** is a primitive value that indicates that **a variable has not been initialized**, and **no value has been assigned to it**. \\ When you declare a variable without assigning any value to it, it is **undefined**. \\ When you try to access an object property or an array element that doesn't exist, you get **undefined**. \\ Functions without a return statement return **undefined**. ===== Comparison ===== **null == undefined** returns **true**, as they are loosely equal. **null === undefined** returns **false**, as they are not strictly equal (they are two different types). \\ Example: let a; console.log(a); // undefined a = null; console.log(a); // null console.log(null == undefined); // true console.log(null === undefined); // false ===== Conclusion ===== * Use **null** when you want to intentionally signify that there is no value. * **undefined** usually means that a variable has not been assigned a value, or a function is not returning anything. So it may be considered the unintentional absence of the value.