A library to use the power of ANSI escape sequences for coloring and styling text in many environments including the terminal, Chromium-based browsers, Node, Bun, Deno, and even Next.js. v4.0 is a big upgrade with enough breaking changes to warrant a migration guide for existing users.
webdiscus
Please open Telegram to view this post
VIEW IN TELEGRAM
๐5โค1๐ฅ1
CHALLENGE
const target = { a: 1, b: 2 };
const handler = {
get(obj, prop) {
return prop in obj ? obj[prop] * 2 : 'Not found';
}
};
const proxy = new Proxy(target, handler);
// Add property to original object
target.c = 3;
// Modify existing property directly on proxy
proxy.a = 10;
// Use Reflect.get instead of direct property access
const result = Reflect.get(proxy, 'd', { custom: true });
console.log(proxy.a, proxy.b, proxy.c, result);
โค7๐4๐ฅ1
What is the output?
Anonymous Quiz
26%
10 4 6 Not found
29%
10 4 3 undefined
37%
20 4 6 Not found
8%
20 4 3 Not found
๐3๐ฅ2โค1
JavaScript (originally named LiveScript) turns thirty years old this year and the Deno team has put together a fantastic timeline-based tour of how much things have progressed from its first appearance in Netscape Navigator, through offshoots like JScript, standardization, and the introduction of Node.js, all the way through to the modern day.
The Deno Team
Please open Telegram to view this post
VIEW IN TELEGRAM
โค12๐2๐ฅ1
CHALLENGE
function analyze(...items) {
const [first, ...rest] = items;
const { length } = [...rest, 'bonus'];
const result = {
...first,
count: length,
};
console.log(result);
}
analyze({ id: 42, name: 'Item' }, 'a', 'b');
What is the output?
Anonymous Quiz
20%
{ id: 42, count: 3 }
34%
{ id: 42, name: 'Item', count: 2 }
42%
{ id: 42, name: 'Item', count: 3 }
4%
{ count: 3 }
๐ฅ4โค3๐1
CHALLENGE
const user = { id: 1, name: 'Alice' };
const userData = new WeakMap();
userData.set(user, { lastLogin: '2023-01-01' });
const clone = { ...user };
const originalData = userData.get(user);
const cloneData = userData.get(clone);
console.log(originalData, cloneData);
โค1๐1
Two members of the Angular team presented a session at this weekโs Google I/O event on the latest updates to the Angular framework in anticipation of the eventual release of Angular 20 next Thursday.
Chasanoff and Thompson (Google)
Please open Telegram to view this post
VIEW IN TELEGRAM
๐ฅ4๐2
CHALLENGE
function mystery() {
try {
throw new Error('Oops');
return 'A';
} catch (err) {
return 'B';
} finally {
return 'C';
}
}
function wrapper() {
try {
return mystery();
} finally {
console.log('D');
}
}
console.log(wrapper());
๐7
๐ฅ3โค2๐2
CHALLENGE
function compose(...funcs) {
return function(x) {
return funcs.reduceRight((acc, fn) => fn(acc), x);
};
}
const add10 = x => x + 10;
const multiply2 = x => x * 2;
const toString = x => `Result: ${x}`;
const composed = compose(toString, multiply2, add10);
console.log(composed(5));
๐6โค1
๐8๐ค4โค2๐ฅ2
CHALLENGE
try {
try {
// Creating a custom error type
class CustomError extends Error {
constructor(message) {
super(message);
this.name = "CustomError";
}
}
const fn = () => {
throw new CustomError("Something went wrong");
};
try {
fn();
} catch (e) {
throw new TypeError("Type error occurred");
}
} catch (e) {
console.log(e instanceof Error, e.name, e instanceof TypeError);
}
} catch (e) {
console.log("Outer catch", e.message);
}
โค5๐2๐ฅ1
What is the output?
Anonymous Quiz
30%
true 'CustomError' false
31%
true 'TypeError' false
21%
false 'CustomError' false
18%
true 'TypeError' true
โค3๐3๐ฅ2
CHALLENGE
function* counter() {
let i = 1;
while (true) {
const reset = yield i++;
if (reset) {
i = 1;
}
}
}
const gen = counter();
console.log(gen.next().value);
console.log(gen.next().value);
console.log(gen.next(true).value);
console.log(gen.next().value);
โค2
What is the output?
Anonymous Quiz
31%
1, 2, 1, 2
33%
1, 2, undefined, 1
20%
1, 2, 1, 1
15%
1, 2, 3, 4
๐8โค2
CHALLENGE
const users = [
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
{ id: 3, name: 'Charlie' }
];
const userScores = new WeakMap();
// Set scores for users
userScores.set(users[0], 95);
userScores.set(users[1], 80);
// Remove reference to Bob
users[1] = null;
let sum = 0;
for (const user of users) {
if (user && userScores.has(user)) {
sum += userScores.get(user);
}
}
console.log(sum);
๐7โค2
What is the output?
Anonymous Quiz
22%
Error: Invalid value used as weak map key
30%
175
36%
95
13%
undefined
โค4๐ฅ1