TG Telegram Group Link
Channel: JavaScript
Back to Bottom
🤔 <syntax-highlight>: A Custom Element for Syntax Highlighting

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
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));
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));
What is the output?
Anonymous Quiz
37%
64
17%
8
33%
64
13%
25
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);
🤔 The Roadmap to AdonisJS 7

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
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());
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);
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();
✌️ Ecma International Approves ECMAScript 2025

What’s New? — It’s that time of year again. The Ecma General Assembly has approved the ES2025 language specification, which you can read in full here if you have a gallon of coffee to hand — or you can enjoy Dr. Axel’s more succinct explainer instead.

Dr. Axel Rauschmayer
Please open Telegram to view this post
VIEW IN TELEGRAM
CHALLENGE

const numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

const result = numbers
.filter(num => num % 2 === 0)
.map(num => num * 2)
.reduce((acc, curr, idx, arr) => {
if (idx === arr.length - 1) {
return (acc + curr) / arr.length;
}
return acc + curr;
}, 0);

console.log(result);
What is the output?
Anonymous Quiz
14%
13
51%
12
29%
10.5
6%
11
✌️ Tips for Making Regular Expressions Easier to Use in JavaScript

Dr. Axel asks us to imagine if we had to write JavaScript without any whitespace or comments, so why should we have to write regexes that way? He has some tips for making the process more pleasant.

Dr. Axel Rauschmayer
Please open Telegram to view this post
VIEW IN TELEGRAM
CHALLENGE

const cache = new WeakMap();

const user1 = { name: 'Alice' };
const user2 = { name: 'Bob' };

cache.set(user1, { lastLogin: 'yesterday' });
cache.set(user2, { lastLogin: 'today' });

const result = [];
result.push(cache.has(user1));
result.push(cache.get(user2).lastLogin);

let user3 = { name: 'Charlie' };
cache.set(user3, { lastLogin: 'now' });
result.push(cache.has(user3));

user3 = null; // Removing the reference
// Garbage collector might run here in real situations

const user4 = { name: 'Charlie' }; // Same name, different object
result.push(cache.has(user4));

console.log(result);
HTML Embed Code:
2025/06/30 10:34:11
Back to Top