TGViewer
Channel Public Channel
JavaScript

JavaScript

@javascript

A resourceful newsletter featuring the latest and most important news, articles, books and updates in the world of #javascript πŸš€ Don't miss our Quizzes!

Let's chat: @nairihar
Subscribers
31.1K
Photos
1.2K
Videos
10
Links
899

Showing posts older than #2395 Β· Back to latest

Older Posts 20 shown
Post #2394 4.79K
πŸ˜†
  • 🀣 29
  • ❀ 18
  • πŸ‘ 1
Post #2393 5.12K
  • πŸ‘ 8
  • 🀣 3
  • ❀ 2
  • πŸ”₯ 2
Post #2392 4.86K
CHALLENGE

function task1() {
console.log('A');
setTimeout(() => console.log('B'), 0);
Promise.resolve().then(() => console.log('C'));
Promise.resolve().then(() => setTimeout(() => console.log('D'), 0));
Promise.resolve().then(() => console.log('E'));
setTimeout(() => console.log('F'), 0);
console.log('G');
}

task1();
// What is the order of the console output?
  • ❀ 1
Post #2391 5.02K
🌲 PSA: Beware of End-of-Life Node.js Versions

Matteo Collina notes the Node.js ecosystem is β€œat a critical juncture”, with v18 and earlier now β€˜End-of-Life’. He breaks down what that really means for users of legacy versions, and why you should skip Active LTS v20 and leap straight to v22 for maximum future-proofing. If you have to stay on older versions, though, Matteo shares an option to consider.

Matteo Collina
  • ❀ 9
  • πŸ‘ 2
  • πŸ”₯ 1
Post #2390 4.79K
  • ❀ 7
  • πŸ‘ 3
  • πŸ”₯ 1
  • πŸ€” 1
Post #2389 4.27K
CHALLENGE

const person = {
name: 'Alice',
greet() {
return `Hello, I'm ${this.name}`;
},
farewell: () => `Goodbye from ${this.name}`
};

const greetFn = person.greet;
const farewellFn = person.farewell;

console.log(person.greet());
console.log(greetFn());
console.log(farewellFn());
  • ❀ 5
Post #2388 4.85K
  • πŸ”₯ 9
  • πŸ€” 6
  • πŸ‘ 5
  • ❀ 3
  • 🀣 1
Post #2387 4.63K
CHALLENGE

const products = [
{ id: 1, name: 'Laptop', price: 1200, category: 'Electronics' },
{ id: 2, name: 'Headphones', price: 100, category: 'Electronics' },
{ id: 3, name: 'Book', price: 15, category: 'Books' },
{ id: 4, name: 'Shirt', price: 25, category: 'Clothing' },
{ id: 5, name: 'Coffee Mug', price: 10, category: 'Kitchen' }
];

const result = products
.filter(p => p.price > 20)
.map(p => ({ name: p.name, value: p.price * 0.9 }))
.reduce((acc, item) => {
acc.names.push(item.name);
acc.total += item.value;
return acc;
}, { names: [], total: 0 });

console.log(result);
  • ❀ 10
  • πŸ‘ 2
  • πŸ”₯ 1
Post #2385 4.71K
  • 🀣 9
  • πŸ”₯ 6
  • ❀ 5
  • πŸ‘ 2
  • πŸ€” 1
Post #2384 4.97K
CHALLENGE

function createCounter() {
let count = 0;
return {
increment: () => ++count,
getCount: () => count
};
}

function compose(...fns) {
return (x) => fns.reduceRight((acc, fn) => fn(acc), x);
}

const counter = createCounter();
const double = x => x * 2;
const addOne = x => x + 1;

const incrementAndProcess = compose(double, addOne, counter.increment);

counter.increment();
const result = incrementAndProcess();
console.log(result);
  • πŸ‘ 9
  • πŸ”₯ 1
Post #2383 5.42K
🌲 Monorepo: From Hate to Love

A monorepo is like a BMW: it requires constant maintenance and attention. You can’t just set it up once and expect it to work smoothly for the next five years.

nairihar
  • ❀ 10
  • 🀣 3
Post #2382 5.33K
  • 🀣 10
  • πŸ€” 5
  • πŸ‘ 3
  • ❀ 2
Post #2381 5.21K
CHALLENGE

const user = {
details: {
name: 'Alex',
contact: null,
preferences: {
theme: 'dark'
}
},
getInfo() {
return this?.details?.contact?.email ||
this?.details?.preferences?.theme ||
this?.details?.name ||
'Unknown';
}
};

console.log(user.getInfo());
  • πŸ‘ 9
  • ❀ 3
Post #2380 4.99K
🍊 Google Gen AI SDK for TypeScript and JavaScript v1

Why let Python developers have all the fun? Now you can harness the full power of Google’s Gemini API (and Vertex platform) from Node too. v1.0 landed a few days ago, but today we also get v1.1 which includes CommonJS support. The Gemini docs and examples now use it too (if you select JavaScript).

Google
  • ❀ 13
  • πŸ‘ 8
  • πŸ”₯ 2
Post #2379 5.01K
  • 🀣 13
  • ❀ 1
  • πŸ€” 1
Post #2378 5.01K
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, num, index, array) => {
if (index === array.length - 1) {
return (acc + num) / array.length;
}
return acc + num;
}, 0);

console.log(result);
  • ❀ 3
Post #2377 5.12K
🫑 qnm: A CLI Tool to Look Into node_modules

If you’ve ever been overwhelmed by what’s in node_modules, this tool lets you dig around with some guidance as to what is what. You can use fuzzy search to find specific things as well as see which modules are using the most space (you can try it right now with `npx qnm doctor`).

Ran Yitzhaki
  • ❀ 4
  • πŸ‘ 2
  • πŸ”₯ 1
  • 🀩 1
Post #2376 4.49K
  • πŸ€” 8
  • ❀ 2
  • πŸ”₯ 1
Post #2375 4.73K
CHALLENGE

class EventEmitter {
constructor() {
this.events = {};
}

on(event, listener) {
if (!this.events[event]) {
this.events[event] = [];
}
this.events[event].push(listener);
return () => this.off(event, listener);
}

off(event, listener) {
if (!this.events[event]) return;
this.events[event] = this.events[event].filter(l => l !== listener);
}

emit(event, ...args) {
if (!this.events[event]) return false;
this.events[event].forEach(listener => listener(...args));
return true;
}
}

const emitter = new EventEmitter();
const unsubscribe = emitter.on('message', data => console.log(data));
emitter.emit('message', 'Hello');
emitter.emit('message', 'World');
unsubscribe();
emitter.emit('message', 'Ignored');
console.log(emitter.emit('message', 'Still ignored'));
  • ❀ 5
  • πŸ‘ 5
  • πŸ€” 4
  • 🀩 2
  • πŸ”₯ 1
Older posts β†’
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook β†’Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 β†’