Understanding Javascript The Weird Part Parts !!exclusive!! [ 2025-2027 ]

function outer() let secret = 'closed over'; return function inner() console.log(secret); ;

function getObj() return // ASI adds semicolon here → returns undefined ok: true ; understanding javascript the weird part parts

0 == false // true '' == false // true null == undefined // true [] == '' // true (both become empty string) [] == 0 // true Always prefer === (no coercion), except when checking null == undefined . 7. Asynchronous Weirdness: Event Loop The weird part: JS is single-threaded but can handle async tasks. function outer() let secret = 'closed over'; return

typeof null; // 'object' (bug in JS) typeof function(){}; // 'function' (but not a separate type) [] instanceof Array; // true [] instanceof Object; // true (arrays are objects) false , 0 , '' (empty string), null , undefined , NaN , -0 , 0n typeof null; // 'object' (bug in JS) typeof

'5' - 1; // 4 (string to number) '5' + 1; // '51' (number to string) +'5'; // 5 (unary plus) !!'false'; // true (non-empty string) use Number() , String() , or explicit Boolean() . 9. Semicolon Insertion (ASI) Weird part: JS adds semicolons automatically, sometimes breaking code.

Everything else is truthy (including [] , {} , "0" ). The weird part: == does type coercion.