Understanding Javascript The Weird Part Parts _hot_ < 360p >

const obj = name: 'Alice', greet() console.log(this.name); ; const greetFn = obj.greet; greetFn(); // undefined (default binding, not implicit) Fix: use arrow functions (lexical this ) or .bind() . The weird part: A function “remembers” its lexical scope even when executed outside it.

function outer() let secret = 'closed over'; return function inner() console.log(secret); ; understanding javascript the weird part parts

function Dog(name) this.name = name; Dog.prototype.bark = function() return 'woof'; ; const d = new Dog('Rex'); d.bark(); // 'woof' Weird parts: const obj = name: 'Alice', greet() console

function getObj() return // ASI adds semicolon here → returns undefined ok: true ; const obj = name: 'Alice'

'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.

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.