CHALLENGE
const arr = [1, [2, 3], [4, [5, 6]]];
const a = arr.flat();
const b = arr.flat(Infinity);
const c = arr.flatMap(x => Array.isArray(x) ? x : [x, x]);
console.log(a, b, c);
β€3
What is the output?
Anonymous Quiz
23%
[ 1, 2, 3, 4, [ 5, 6 ] ] [ 1, 2, 3, 4, 5, 6 ] [ [1,1], [2,3], [4,[5,6]] ]
40%
[ 1, 2, 3, 4, [ 5, 6 ] ] [ 1, 2, 3, 4, 5, 6 ] [ 1, 1, 2, 3, 4, [ 5, 6 ] ]
23%
[ 1, 2, 3, 4, [ 5, 6 ] ] [ 1, 2, 3, 4, 5, 6 ] [ 1, 2, 3, 4, [ 5, 6 ] ]
15%
[ 1, 2, 3, 4, 5, 6 ] [ 1, 2, 3, 4, 5, 6 ] [ 1, 1, 2, 3, 4, [ 5, 6 ] ]
π₯2β€1
CHALLENGE
function* inner() {
const x = yield 1;
yield x + 1;
return 100;
}
function* outer() {
const result = yield* inner();
yield result;
}
const g = outer();
console.log(g.next().value, g.next(10).value, g.next().value, g.next().value);β€1
What is the output?
Anonymous Quiz
21%
1 11 undefined 100
58%
1 11 100 undefined
13%
1 11 100 100
9%
1 10 100 undefined
β€2π₯2π€1
CHALLENGE
const obj = {
value: 42,
getValue: function() {
return this.value;
}
};
const unboundGetValue = obj.getValue;
const boundGetValue = unboundGetValue.bind(obj);
const boundTwice = boundGetValue.bind({ value: 100 });
console.log(
boundGetValue(),
boundTwice(),
unboundGetValue.call({ value: 7 }),
obj.getValue.apply({ value: 99 })
);What is the output?
Anonymous Quiz
32%
42 42 7 99
38%
42 100 7 99
18%
42 42 42 42
13%
undefined 42 7 99
β€4
Maybe David Bushell saw the writing on the wall, as the Deno team isn't joining Cloudflare to keep working on Deno, but to fold celld into workerd so Durable Objects can be self-hosted (more on that here). The Deno runtime will get a final year of official fixes, Deno Deploy closes in six months, and JSR moves to Cloudflare's infrastructure.
Ryan Dahl
Please open Telegram to view this post
VIEW IN TELEGRAM
β€3π2π€1π€©1
CHALLENGE
class EventBus {
#listeners = new Map();
on(event, cb) {
if (!this.#listeners.has(event)) this.#listeners.set(event, []);
this.#listeners.get(event).push(cb);
return this;
}
emit(event, ...args) {
const cbs = this.#listeners.get(event) || [];
return cbs.map(cb => cb(...args));
}
}
const bus = new EventBus();
bus.on('data', x => x * 2).on('data', x => x + 1);
const results = bus.emit('data', 5);
console.log(results, bus.emit('missing', 1));β€3
What is the output?
Anonymous Quiz
17%
[ 10, 11 ] []
45%
[ 10, 6 ] undefined
34%
[ 10, 6 ] []
3%
[ 5, 6 ] []
β€1π€1π€©1
You might be wondering if the title of this article is a bit ambitious, but fear not! Iβve put in the time and effort to cover everything you need to know about the EventLoop in Node.js. And believe me, youβll discover so many new things along the way!
nairihar
Please open Telegram to view this post
VIEW IN TELEGRAM
β€6π1π₯1
CHALLENGE
const x = 0;
const y = '';
const z = null;
const r1 = x ?? y ? 'A' : 'B';
const r2 = z ?? y ? 'C' : 'D';
console.log(r1, r2);
π€©1
β€2π₯1
CHALLENGE
async function run() {
const results = await Promise.allSettled([
Promise.resolve(1),
Promise.reject('error'),
new Promise(resolve => setTimeout(() => resolve(3), 0)),
]);
console.log(results.map(r => r.value ?? r.reason).join(','));
}
run();β€3π1
β€2
CHALLENGE
class Counter {
#count = 0;
get value() {
return this.#count;
}
set value(v) {
if (v < this.#count) throw new RangeError('Cannot decrease');
this.#count = v;
}
}
const c = new Counter();
c.value = 5;
let msg;
try {
c.value = 3;
} catch (e) {
msg = e.message;
}
c.value = 10;
console.log(msg, c.value);π₯2
What is the output?
Anonymous Quiz
20%
RangeError 10
59%
Cannot decrease 10
14%
undefined 10
7%
Cannot decrease 3
β€1π1π€1
CHALLENGE
const obj = { b: 1, 2: 'two', a: 3, 1: 'one' };
console.log(Object.keys(obj).join(','), Object.values(obj).join(','));π€3
What is the output?
Anonymous Quiz
17%
1,2,a,b one,two,3,1
50%
b,2,a,1 1,two,3,one
27%
1,2,b,a one,two,1,3
6%
a,b,1,2 3,1,one,two
β€6π1
CHALLENGE
class Counter {
static #total = 0;
#id;
constructor() {
Counter.#total++;
this.#id = Counter.#total;
}
get id() { return this.#id; }
static get total() { return Counter.#total; }
}
class Special extends Counter {
#label;
constructor(label) {
super();
this.#label = label;
}
get label() { return `${this.#label}-${this.id}`; }
}
const c1 = new Counter();
const c2 = new Special('x');
const c3 = new Special('y');
console.log(c1.id, c2.id, c3.label, Counter.total);β€1