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
895

Showing posts older than #2677 · Back to latest

Older Posts 20 shown
Post #2676 3.85K
CHALLENGE

console.log('1');

Promise.resolve().then(() => {
console.log('2');
Promise.resolve().then(() => console.log('3'));
});

Promise.resolve().then(() => {
console.log('4');
});

setTimeout(() => console.log('5'), 0);

console.log('6');
Post #2675 3.81K
👀 Give Your AI Eyes: Introducing Chrome DevTools MCP

The Chrome team has released an MCP server for Chrome DevTools, enabling agents like Claude Code or OpenAI Codex to use the DevTools to debug and analyze the performance and behavior of your webapps (or even just to automate the use of Chrome generally). Addy does a great job of explaining the potential here.

Addy Osmani
  • ❤ 7
  • 👍 3
  • 🔥 2
Post #2674 3.73K
  • ❤ 5
  • 👍 1
  • 🔥 1
Post #2673 3.32K
CHALLENGE

async function processData() {
console.log('Start');

const promise1 = new Promise(resolve => {
console.log('Promise 1 executor');
resolve('Result 1');
});

const promise2 = Promise.resolve('Result 2');
console.log('After promises created');

const result1 = await promise1;
console.log(result1);

const result2 = await promise2;
console.log(result2);

return 'Done';
}

processData().then(result => console.log(result));
  • ❤ 1
Post #2672 3.7K
  • ❤ 6
  • 🔥 4
  • 🤩 3
  • 👍 1
Post #2671 3.83K
CHALLENGE

const target = { name: 'Sarah', age: 25 };
const handler = {
get(obj, prop) {
if (prop === 'toString') {
return () => `Person: ${obj.name}`;
}
return Reflect.get(obj, prop);
},
has(obj, prop) {
return prop !== 'age' && Reflect.has(obj, prop);
}
};
const proxy = new Proxy(target, handler);
console.log(proxy.name);
console.log('age' in proxy);
console.log(proxy.toString());
  • 🤩 3
  • ❤ 1
  • 🤔 1
Post #2670 3.75K
  • ❤ 2
  • 👍 2
  • 🔥 2
Post #2669 3.89K
CHALLENGE

class StateMachine {
constructor() {
this.state = 'idle';
this.transitions = {
idle: { start: 'running', reset: 'idle' },
running: { pause: 'paused', stop: 'stopped' },
paused: { resume: 'running', stop: 'stopped' },
stopped: { reset: 'idle' }
};
}

transition(action) {
const nextState = this.transitions[this.state]?.[action];
if (nextState) {
this.state = nextState;
return true;
}
return false;
}
}

const sm = new StateMachine();
console.log(sm.transition('start'));
console.log(sm.state);
console.log(sm.transition('reset'));
console.log(sm.state);
  • ❤ 9
  • 👍 2
  • 🤔 1
Post #2668 4.19K
😆
  • 🤣 49
  • 👍 4
  • 🔥 2
Post #2666 3.55K
CHALLENGE

class ValidationError extends Error {
constructor(message, code) {
super(message);
this.name = 'ValidationError';
this.code = code;
}
}

function processData(data) {
try {
if (!data) throw new ValidationError('Data required', 'MISSING_DATA');
return data.toUpperCase();
} catch (error) {
if (error instanceof ValidationError) {
console.log(`${error.name}: ${error.message} (${error.code})`);
} else {
console.log(`Unexpected error: ${error.message}`);
}
}
}

processData(null);
processData(42);
  • ❤ 3
  • 🤣 2
Post #2665 3.41K
  • ❤ 6
  • 👍 2
  • 🔥 1
Post #2664 3.74K
CHALLENGE

class CustomError extends Error {
constructor(message, code) {
super(message);
this.name = 'CustomError';
this.code = code;
}
}

try {
throw new CustomError('Something went wrong', 500);
} catch (error) {
console.log(error instanceof Error);
console.log(error instanceof CustomError);
console.log(error.name);
console.log(typeof error.code);
}
  • ❤ 8
Post #2663 3.66K
  • 🔥 3
  • 👍 2
  • ❤ 1
Post #2662 3.56K
CHALLENGE

let cache = new Map();
let obj = { name: 'Emma', age: 28 };

function memoize(fn) {
return function(...args) {
const key = JSON.stringify(args);
if (cache.has(key)) {
console.log('Cache hit');
return cache.get(key);
}
const result = fn.apply(this, args);
cache.set(key, result);
return result;
};
}

const process = memoize((data) => {
console.log('Processing:', data.name);
return data.age * 2;
});

process(obj);
process(obj);
obj.age = 30;
process(obj);
console.log('Cache size:', cache.size);
  • ❤ 7
Post #2661 3.75K
⛽️ npm-check-updates 18.2: Update package.json Dependencies to Latest Versions

That is, as opposed to the specified versions. Includes a handy -i interactive mode so you can look at potential upgrades and then opt in to them one by one. v18.2 adds a ‘cooldown’ feature to help protect against supply chain attacks by requiring package versions to be published at least the given number of days before considering them for upgrade.

Raine Revere
  • ❤ 6
  • 👍 3
  • 🔥 2
Post #2660 3.52K
  • 🤩 5
  • ❤ 4
  • 👍 1
Post #2659 3.69K
CHALLENGE

const pattern = /(?<=\d)(?=(?:\d{3})+(?!\d))/g;
const str = '1234567890';
const result = str.replace(pattern, ',');
console.log(result);

const regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/;
const tests = ['Password1', 'password', 'PASSWORD1', 'Pass1'];
tests.forEach(test => {
console.log(`${test}: ${regex.test(test)}`);
});

const capture = /([a-z]+)(\d+)/g;
const text = 'item123 product456';
const matches = [...text.matchAll(capture)];
console.log(matches[1][1]);
  • ❤ 3
Post #2658 3.69K
🥳 IINA is a popular, open-source media player for macOS and it has just added a JavaScript-based plugin system to let users extend its functionality.
  • 🔥 3
  • ❤ 2
  • 👍 2
Post #2657 4K
  • ❤ 3
  • 🔥 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 →