JavaScript
31.9K subscribers
1.01K photos
9 videos
33 files
694 links
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
Download Telegram
🀟 Eliminating JavaScript Cold Starts on AWS Lambda

Porffor is a rapidly developing ahead-of-time JavaScript compiler with a major benefit being extremely quick process launch times (think sub-millisecond). This is certainly more a taste of the future, and something to experiment with, rather than something you want to imminently deploy into production.

Oliver Medhurst
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘7❀4πŸ”₯1
CHALLENGE

const user = {
name: 'Sarah',
age: 25,
getName() { return this.name; },
getAge: () => this.age
};

const methods = {
regular: user.getName,
arrow: user.getAge
};

console.log(methods.regular());
console.log(methods.arrow());
console.log(user.getName());
console.log(user.getAge());
Please open Telegram to view this post
VIEW IN TELEGRAM
❀9πŸ€”5🀩5
CHALLENGE

let obj1 = { name: 'Sarah' };
let obj2 = { name: 'Mike' };
let obj3 = { ref: obj1 };

obj1.circular = obj1;
obj2.partner = obj3;
obj3.partner = obj2;

let weakMap = new WeakMap();
weakMap.set(obj1, 'data1');
weakMap.set(obj2, 'data2');

obj1 = null;
obj2 = null;

console.log(weakMap.has(obj3.ref));
console.log(obj3.partner.name);
❀5
❀2πŸ‘2πŸ”₯1
If Linus Torvalds applied for a junior coding job today…
He’d get rejected.

He doesn’t have β€œ5 years React experience.”

That’s how broken hiring has become. 😨
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯14🀣14❀3🀩1
CHALLENGE

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

const counter1 = createCounter();
const counter2 = createCounter();
counter1.increment();
counter1.increment();
counter2.increment();
console.log(counter1.get(), counter2.get());
const { increment, get } = counter1;
increment();
console.log(get());
What is the output?
Anonymous Quiz
49%
2 1 3
30%
2 1 4
15%
3 1 4
5%
3 2 3
πŸ‘4❀2πŸ”₯1
CHALLENGE

const promise1 = Promise.resolve('first');
const promise2 = new Promise(resolve => {
resolve('second');
});

const promise3 = Promise.resolve().then(() => 'third');

async function test() {
console.log('start');

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

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

const result3 = await promise3;
console.log(result3);

console.log('end');
}

test();
❀2
Is there a difference between the previous code (red) and the new one (green) ?

Actually, there is 35second difference 😠

The previous code was, on every loop, creating a new object, always deallocating and reallocating memory, while the second example creates one object (a cache) and save each item into it.

Eduard KrivΓ‘nek
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ‘7πŸ”₯4❀2
CHALLENGE

class EventBus {
constructor() {
this.events = new Map();
}

on(event, callback) {
if (!this.events.has(event)) {
this.events.set(event, []);
}
this.events.get(event).push(callback);
}

emit(event, data) {
if (this.events.has(event)) {
this.events.get(event).forEach(callback => callback(data));
}
}
}

const bus = new EventBus();
bus.on('user', name => console.log(`Hello ${name}`));
bus.on('user', name => console.log(`Welcome ${name}`));
bus.emit('user', 'Sarah');
bus.emit('admin', 'John');
❀1πŸ€”1
🀟 How We Migrated Our Rush.js Monorepo to Node Type Stripping

Since v23.6 (and in LTS since v22.18.0), Node has supported running (most) TypeScript code by stripping the types out first. The Calm team was excited about the potential for improving productivity and DX, and set a migration in process. Here’s a look at the challenges encountered and what the end results were.

Stuart Dotson (Calm)
Please open Telegram to view this post
VIEW IN TELEGRAM
πŸ”₯4❀1πŸ‘1