CHALLENGE
console.log('start');
Promise.resolve().then(() => {
console.log('promise 1');
});
setTimeout(() => {
console.log('timeout');
}, 0);
Promise.resolve().then(() => {
console.log('promise 2');
}).then(() => {
console.log('promise 3');
});
console.log('end');β€5π3π₯3
Please open Telegram to view this post
VIEW IN TELEGRAM
β€6π₯6π5
CHALLENGE
const nums = [1, 2, 3];
const obj = { a: 1, b: 2 };
const newObj = { ...obj, b: 3, ...obj };
const arr1 = [4, 5];
const arr2 = [6, 7];
const combined = [...nums, ...arr1, ...arr2];
const [first, ...rest] = combined;
const { a, ...remaining } = newObj;
console.log(newObj.b);
console.log(rest.length);
console.log(remaining.b);
π6π₯4β€1
π₯4π3β€2π€2
First introduced two years ago, Node has a (still experimental) feature to build single executable applications that can be deployed to machines that donβt have Node installed. This weekβs Node.js 25.5 release, with its --build-sea flag, moves the final injection step into Node itself, eliminating the need for external tooling and turning what was a multi-step, low-level process into a single command.
Joyee Cheung
Please open Telegram to view this post
VIEW IN TELEGRAM
π8β€5π₯2
CHALLENGE
const user = {
profile: {
settings: {
theme: 'dark',
notifications: null
}
}
};
const getNotificationSound = (user) => {
return user?.profile?.settings?.notifications?.sound ?? 'default';
};
console.log(getNotificationSound(user));
console.log(getNotificationSound(null));
console.log(getNotificationSound({ profile: {} }));β€6π6π₯3
What is the output?
Anonymous Quiz
25%
default default undefined
33%
undefined undefined undefined
14%
null default default
29%
default default default
β€3π1π₯1
CHALLENGE
function processData() {
try {
console.log('start');
throw new Error('oops');
console.log('unreachable');
} catch (e) {
console.log('caught');
return 'error';
} finally {
console.log('cleanup');
}
console.log('end');
}
const result = processData();
console.log(result);π₯9β€7π4
What is the output?
Anonymous Quiz
23%
start oops cleanup undefined
48%
start caught cleanup error
17%
start caught end error
12%
start caught cleanup undefined
β€6π€3π2π₯1
CHALLENGE
const target = { name: 'Sarah', age: 25 };
const handler = {
get(obj, prop) {
if (prop === 'toString') {
return () => `Person: ${obj.name}`;
}
return Reflect.get(obj, prop);
},
set(obj, prop, value) {
if (prop === 'age' && value < 0) {
return false;
}
return Reflect.set(obj, prop, value);
}
};
const proxy = new Proxy(target, handler);
proxy.age = -5;
proxy.location = 'NYC';
console.log(proxy.toString());
console.log(proxy.age);
console.log(proxy.location);β€9π6π₯2
What is the output?
Anonymous Quiz
34%
Person: Sarah 25 NYC
34%
Person: Sarah undefined NYC
16%
Person: Sarah 25 undefined
16%
Person: Sarah -5 NYC
π4β€1π₯1
CHALLENGE
const obj = {
name: 'Sarah',
greet() {
console.log(`Hello, ${this.name}`);
}
};
const person = { name: 'Mike' };
const func = obj.greet;
obj.greet();
func();
func.call(person);
person.hello = obj.greet;
person.hello();π₯7π5β€3
What is the output?
Anonymous Quiz
30%
Hello, Sarah Hello, Sarah Hello, Mike Hello, Sarah
24%
Hello, Sarah Hello, Mike Hello, Mike Hello, Mike
19%
Hello, Sarah Hello, Hello, Mike Hello, Mike
27%
Hello, Sarah Hello, undefined Hello, Mike Hello, Mike
π6β€2π€£2π₯1
CHALLENGE
const source = { a: 1, b: { c: 2 } };
const target1 = Object.assign({}, source);
const target2 = { ...source };
source.b.c = 99;
target1.a = 10;
target2.b.c = 50;
console.log(source.a);
console.log(source.b.c);
console.log(target1.a);
console.log(target1.b.c);
console.log(target2.a);
console.log(target2.b.c);β€5π4π₯3
What is the output?
Anonymous Quiz
30%
1 50 10 50 1 50
29%
10 99 10 99 10 99
17%
1 2 10 2 1 2
23%
1 99 10 99 1 99
β€5π3π₯2
Four stalwarts of the JavaScript ecosystem all shipped notable releases this week, and odds are you're using at least one of them:
β’ Gatsby v5.16 proves Gatsby, once considered neck-and-neck with Next.js in the React world, is not 'dead'. The headline feature is React 19 support.
β’ Babel 7 just shipped its final release. "After years in the making, Babel 8 is finally ready," in release candidate form, at least.
β’ Rspress 2.0 is a major release for the high-performance Rust-powered, but JavaScript-facing, static site generator.
β’ Lodash 4.17.23 sounds minor, but it's a 'security reset' for the still heavily used utility library and is designed to provide a base for a longer future.
Please open Telegram to view this post
VIEW IN TELEGRAM
π₯9π5β€4
CHALLENGE
const memoize = (fn) => {
const cache = new Map();
return (...args) => {
const key = JSON.stringify(args);
if (cache.has(key)) return cache.get(key);
const result = fn(...args);
cache.set(key, result);
return result;
};
};
const fibonacci = memoize((n) => {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
});
console.log(fibonacci(10));
console.log(fibonacci(5));
console.log(fibonacci(10));π₯8β€4π2
β€2π₯2π1
Why use a proper locale-aware API to parse numbers when you can hand-roll a maze of string splits, separator swaps, and implicit type coercions that silently break on edge cases?
Remy Porter (The Daily WTF)
Please open Telegram to view this post
VIEW IN TELEGRAM
β€6π₯6π3