π9π€1
π Exploring JavaScript (ES2025 Edition)
Dr. Axel is back with his latest book covering all things relating to modern JavaScript at the language level (think built-in data types, modularity, how objects, classes and promises work, etc.). As with all of Axel's books, itβs available to buy but also to read online in HTML form for free. Heβs also produced a set of flashcards to help you learn language features in both HTML and Anki forms.
Dr. Axel Rauschmayer
Dr. Axel is back with his latest book covering all things relating to modern JavaScript at the language level (think built-in data types, modularity, how objects, classes and promises work, etc.). As with all of Axel's books, itβs available to buy but also to read online in HTML form for free. Heβs also produced a set of flashcards to help you learn language features in both HTML and Anki forms.
Dr. Axel Rauschmayer
π₯4β€3π2
CHALLENGE
class ShoppingCart {
constructor() {
if (ShoppingCart.instance) {
return ShoppingCart.instance;
}
this.items = [];
ShoppingCart.instance = this;
}
addItem(item) {
this.items.push(item);
}
getItems() {
return [...this.items];
}
}
const cart1 = new ShoppingCart();
const cart2 = new ShoppingCart();
cart1.addItem('Book');
cart2.addItem('Laptop');
console.log(cart1.getItems());
What is the output?
Anonymous Quiz
11%
['Laptop']
26%
TypeError: Cannot read property 'push' of undefined
43%
['Book', 'Laptop']
21%
['Book']
π6π€2β€1π₯1
The creator of the Porffor JavaScript compiler talks about the various ways to make JavaScript faster to execute, before digging into Porfforβs approach.
Oliver Medhurst
Please open Telegram to view this post
VIEW IN TELEGRAM
β€5π3π₯1
CHALLENGE
const templateFn = (strings, ...values) => {
return strings.reduce((result, str, i) => {
const value = values[i] !== undefined ?
(typeof values[i] === 'number' ? values[i] * 2 : values[i]) : '';
return result + str + value;
}, '');
};
const num = 5;
const str = 'world';
const result = templateFn`Hello ${str}, ${num} times ${'!'}`;
console.log(result);
π5β€2
What is the output?
Anonymous Quiz
19%
Hello world, 10 times !undefined
30%
Hello world, 5 times !undefined
36%
Hello world, 10 times !
15%
Hello world, 5 times !
π€6β€5π4
A custom element that uses the CSS Custom Highlight API (supported by most modern browsers) for syntax highlighting so you donβt need to retreat to the age-old method of wrapping every token in spans.
AndrΓ© Ruffert
Please open Telegram to view this post
VIEW IN TELEGRAM
π5β€3π₯1
CHALLENGE
function processConfig(config) {
const settings = {
timeout: config.timeout ?? 1000,
retries: config.retries ?? 3,
logging: config.logging ?? false,
debug: config.debug || true
};
return settings;
}
const userConfig = {
timeout: 0,
retries: null,
logging: false,
debug: false
};
console.log(processConfig(userConfig));
π8β€1
What is the output?
Anonymous Quiz
21%
{ timeout: 1000, retries: null, logging: false, debug: true }
30%
{ timeout: 1000, retries: 3, logging: false, debug: false }
38%
{ timeout: 0, retries: 3, logging: false, debug: true }
11%
{ timeout: 0, retries: 3, logging: false, debug: false }
π₯8β€3π3
CHALLENGE
const createMathOps = (base) => {
return {
add: (x) => base + x,
multiply: (x) => base * x
};
};
const createAdvancedMathOps = (base) => {
const basicOps = createMathOps(base);
return {
...basicOps,
square: () => basicOps.multiply(base),
addThenSquare: (x) => {
const added = basicOps.add(x);
return added * added;
}
};
};
const calculator = createAdvancedMathOps(5);
console.log(calculator.addThenSquare(3));
π7β€1
π€£21π€17β€4
CHALLENGE
const obj = { name: 'Alice', age: 30 };
const handler = {
get(target, prop) {
return prop in target ? target[prop] : `Property '${prop}' doesn't exist`;
}
};
const proxy = new Proxy(obj, handler);
const descriptors = Object.getOwnPropertyDescriptors(obj);
Reflect.defineProperty(obj, 'city', {
value: 'New York',
enumerable: false
});
console.log(proxy.city, proxy.country);
β€3π₯2
What is the output?
Anonymous Quiz
40%
New York Property 'country' doesn't exist
23%
New York undefined
30%
Property 'city' doesn't exist Property 'country' doesn't exist
8%
undefined Property 'country' doesn't exist
π7β€3π₯2
Adonis is a popular TypeScript-first 'batteries included' web framework with a rich set of features, and its developers say theyβre βshifting gearsβ and stepping up with more frequent major releases. v7 promises a lot, including Node.js diagnostic channel support, a type-safe URL builder, a new encryption layer, first-class support for notifications and TanStack Query, plus more. Youβre encouraged to give your feedback here.
Romain Lanz
Please open Telegram to view this post
VIEW IN TELEGRAM
β€5π₯3π2
CHALLENGE
const text = 'Today is 2023-12-31 and tomorrow is 2024-01-01';
const dateRegex = /(\d{4})-(\d{2})-(\d{2})/g;
let result = '';
let match;
while ((match = dateRegex.exec(text)) !== null) {
const [fullMatch, year, month, day] = match;
result += `${day}/${month}/${year.slice(2)} `;
}
console.log(result.trim());
β€5π2
What is the output?
Anonymous Quiz
33%
31/12/23 01/01/24
35%
2023-12-31 2024-01-01
20%
31/12/2023 01/01/2024
13%
31/12/23
β€4π€4π1
CHALLENGE
function* counter() {
let count = 1;
while (true) {
const reset = yield count++;
if (reset) {
count = 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);
π6β€3
π5β€3π₯1π€1
CHALLENGE
function outer() {
console.log(typeof inner);
console.log(typeof inner2);
var inner = function() {
return 'Inside inner';
};
function inner2() {
return 'Inside inner2';
}
console.log(typeof inner);
console.log(typeof inner2);
}
outer();
π4β€1