π€7β€3π3
CHALLENGE
class EventManager {
constructor() {
this.listeners = new Map();
}
addListener(event, callback) {
if (!this.listeners.has(event)) {
this.listeners.set(event, new Set());
}
this.listeners.get(event).add(callback);
}
removeAllListeners() {
this.listeners.clear();
}
}
const manager = new EventManager();
const obj = { data: new Array(1000).fill('memory') };
manager.addListener('test', () => obj.data.length);
manager.removeAllListeners();
console.log(manager.listeners.size);π₯2β€1π1
The Vite-powered, Jest-compatible testing framework introduces visual regression testing, makes its βBrowser Modeβ stable (for running tests in a browser directly), adds Playwright Traces support, and more. Still unsure? You can compare it with other test runners here.
VoidZero and Contributors
Please open Telegram to view this post
VIEW IN TELEGRAM
β€3π2π₯1
CHALLENGE
async function fetchData() {
return Promise.resolve('data');
}
async function processData() {
const result = await fetchData();
console.log('Processing:', result);
return result.toUpperCase();
}
const promise = processData();
console.log('Promise:', promise);
promise.then(value => {
console.log('Final:', value);
});What is the output?
Anonymous Quiz
27%
Processing: data Promise: Promise { <pending> } Final: DATA
40%
Promise: Promise { <pending> } Processing: data Final: DATA
26%
Promise: Promise { <pending> } Final: DATA Processing: data
7%
Processing: data Final: DATA Promise: Promise { <pending> }
π5β€2π₯1
CHALLENGE
class DataProcessor {
constructor(transform) {
this.transform = transform;
}
process(data) {
return this.transform(data);
}
}
const multiply = x => x * 2;
const addTen = x => x + 10;
const toString = x => `Result: ${x}`;
const compose = (...fns) => x => fns.reduceRight((acc, fn) => fn(acc), x);
const processor = new DataProcessor(compose(toString, addTen, multiply));
console.log(processor.process(5));β€2π₯2
β€4π2π₯1
Itβs been more than four years since we linked to Sindre's handy resource, but it continues to get updates and tweaks (and, if you want, you can contribute a submission too β though the bar is quite high).
Sindre Sorhus
Please open Telegram to view this post
VIEW IN TELEGRAM
β€4π₯3π2
CHALLENGE
const target = { name: 'Sarah', age: 25 };
const handler = {
get(obj, prop) {
if (prop in obj) {
return obj[prop].toString().toUpperCase();
}
return `Property ${prop} not found`;
},
set(obj, prop, value) {
obj[prop] = value * 2;
return true;
}
};
const proxy = new Proxy(target, handler);
proxy.salary = 50000;
console.log(proxy.name);
console.log(proxy.age);
console.log(proxy.salary);
console.log(proxy.city);What is the output?
Anonymous Quiz
50%
SARAH 25 100000 Property city not found
37%
SARAH 25 50000 Property city not found
11%
Sarah 25 50000 undefined
1%
Sarah age salary city
π₯3β€1π1
CHALLENGE
function highlight(strings, ...values) {
return strings.reduce((result, string, i) => {
const value = values[i] ? `<mark>${values[i]}</mark>` : '';
return result + string + value;
}, '');
}
const name = 'Sarah';
const skill = 'React';
const template = highlight`Hello ${name}, you're great at ${skill}!`;
console.log(template);CHALLENGE
const str = 'JavaScript';
const result1 = str.slice(-6, -2);
const result2 = str.substring(-6, -2);
const result3 = str.substr(-6, 4);
const combined = [result1, result2, result3];
const final = combined.map(s => s || 'empty').join(' | ');
console.log(final);
What is the output?
Anonymous Quiz
26%
Scri | JavaScript | Scri
39%
Script | empty | Script
26%
Scri | empty | Scri
9%
Scri | | Scri
π€5β€3π1π₯1
Please open Telegram to view this post
VIEW IN TELEGRAM
β€3π2π₯1π€£1