javascript | Unsorted

Telegram-канал javascript - JavaScript

31615

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

Subscribe to a channel

JavaScript

✌️ The JavaScript Bundler Grand Prix

Bundlers now sit at the heart of many JavaScript workflows and are sometimes even integrated into runtimes (e.g. Bun’s). This piece surveys the landscape and argues the speed wars are mostly over, with the real battle shifting to artifact size and the code that actually ships to users.

Kate Holterhoff

Читать полностью…

JavaScript

🌟 Anthropic just bought your favorite JS runtime...

🔥 Fireship

Читать полностью…

JavaScript

Merry Christmas 🎄

Читать полностью…

JavaScript

CHALLENGE

const x = 5;
const y = 10;

const result = `${x + y}`;
const nested = `Value: ${`${x}` + `${y}`}`;
const expr = `${x}${y}`;

console.log(result);
console.log(nested);
console.log(expr);
console.log(typeof result);

Читать полностью…

JavaScript

💎 Sponsored

Gold quietly hit a new record in 2025 🚀

Some assets move fast, others move steadily, but both say something about how we react to risk.

How well do you read these shifts?

Check yourself by taking a short quiz.

Читать полностью…

JavaScript

CHALLENGE

const json = '{"name":"Sarah","age":25,"active":true}';
const obj = JSON.parse(json);

obj.name = "Emma";
obj.age++;

const json2 = JSON.stringify(obj);
const obj2 = JSON.parse(json2);

obj.age = 100;

console.log(obj2.age);

Читать полностью…

JavaScript

CHALLENGE

const x = null;
const y = undefined;
const z = 0;

const result1 = x ?? 'default';
const result2 = y ?? 'default';
const result3 = z ?? 'default';

const combined = result1 ? result2 ? result3 : 'B' : 'C';

console.log(combined);

Читать полностью…

JavaScript

CHALLENGE

function Vehicle(type) {
this.type = type;
}

Vehicle.prototype.wheels = 4;
Vehicle.prototype.getInfo = function() {
return `${this.type}: ${this.wheels}`;
};

const car = new Vehicle('Car');
const bike = Object.create(car);
bike.type = 'Bike';
bike.wheels = 2;

console.log(car.getInfo() + ' | ' + bike.getInfo());

Читать полностью…

JavaScript

CHALLENGE

const obj = { a: 1, b: 2, c: 3 };
Object.defineProperty(obj, 'd', {
value: 4,
enumerable: false
});

const entries = Object.entries(obj);
const keys = Object.keys(obj);
const values = Object.values(obj);

console.log(entries.length + keys.length + values.length);

Читать полностью…

JavaScript

CHALLENGE

class Subject {
constructor() {
this.observers = [];
}
attach(observer) {
this.observers.push(observer);
}
notify(data) {
this.observers.forEach(obs => obs.update(data));
}
}

const subject = new Subject();
subject.attach({ update: (d) => console.log(d * 2) });
subject.attach({ update: (d) => console.log(d + 5) });
subject.notify(10);

Читать полностью…

JavaScript

CHALLENGE

const a = { x: 1 };
const b = a;
const c = { x: 1 };

b.x = 2;
const d = b;
d.x = 3;

console.log(a.x);
console.log(b.x);
console.log(c.x);
console.log(a === b);
console.log(a === c);

Читать полностью…

JavaScript

CHALLENGE

const x = 5;
const y = 10;

const obj = {
x,
y,
z: x + y,
calculate() {
return this.x * this.y;
},
[x + y]: 'computed'
};

console.log(obj.calculate() + obj[15] + obj.z);

Читать полностью…

JavaScript

CHALLENGE

const map = new Map([
['a', 1],
['b', 2],
['c', 3]
]);

const key = { id: 'key' };
map.set(key, 4);
map.set(key, 5);

const result = [];
result.push(map.get('a'));
result.push(map.get(key));
result.push(map.size);
result.push(map.has({ id: 'key' }));

console.log(result);

Читать полностью…

JavaScript

CHALLENGE

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

on(event, callback) {
this.events[event] = this.events[event] || [];
this.events[event].push(callback);
return this;
}

emit(event, data) {
if (this.events[event]) {
this.events[event].forEach(cb => cb(data));
}
return this;
}
}

const emitter = new EventEmitter();
emitter.on('test', x => console.log(x * 2))
.on('test', x => console.log(x + 5))
.emit('test', 10);

Читать полностью…

JavaScript

CHALLENGE

class Logger {
log(msg) {
return `[LOG]: ${msg}`;
}
}

class Formatter {
format(text) {
return text.toUpperCase();
}
}

class Service {
constructor(logger, formatter) {
this.logger = logger;
this.formatter = formatter;
}

process(data) {
const formatted = this.formatter.format(data);
return this.logger.log(formatted);
}
}

const service = new Service(new Logger(), new Formatter());
console.log(service.process('hello world'));

Читать полностью…

JavaScript

CHALLENGE

const getValue = (x) => {
console.log(`Getting: ${x}`);
return x;
};

const obj = { name: null };

const result = obj.name || getValue('default') && getValue('final');
console.log(`Result: ${result}`);

Читать полностью…

JavaScript

CHALLENGE

const numbers = [1, 2, 3, 4, 5];
const result = numbers
.filter(n => n % 2 === 0)
.map(n => n * 2)
.reduce((acc, curr) => acc + curr, 0);

const original = numbers.slice();
numbers.splice(2, 1, 99);

console.log(result);
console.log(numbers);
console.log(original);

Читать полностью…

JavaScript

CHALLENGE

const obj = Object.seal({ a: 1, b: { c: 2 } });
obj.a = 10;
obj.b.c = 20;
obj.d = 30;
delete obj.a;

const frozen = Object.freeze({ x: 5, y: { z: 10 } });
frozen.x = 50;
frozen.y.z = 100;
delete frozen.y;

console.log(obj.a, obj.b.c, obj.d, frozen.x, frozen.y.z);

Читать полностью…

JavaScript

CHALLENGE

const x = 0.1 + 0.2;
const y = 0.3;

console.log(x === y);
console.log(x.toFixed(1) === y.toFixed(1));
console.log(+x.toFixed(1) === +y.toFixed(1));

const num = 42;
console.log(num.toString(2));
console.log(parseInt('101010', 2));

Читать полностью…

JavaScript

CHALLENGE

const multiplier = 3;

function createCounter() {
let count = 0;
const multiplier = 5;

return function() {
count++;
return count * multiplier;
};
}

const counter = createCounter();
console.log(counter());
console.log(counter());
console.log(multiplier);

Читать полностью…

JavaScript

CHALLENGE

function Vehicle(type) {
this.type = type;
this.wheels = 4;
}

Vehicle.prototype.describe = function() {
return `${this.type} with ${this.wheels} wheels`;
};

const car = new Vehicle('Car');
const bike = Vehicle('Bike');

console.log(car.describe());
console.log(typeof bike);
console.log(globalThis.type);

Читать полностью…

JavaScript

🤔 Open Sourcing the Remix Store

The Remix Store is a swag store for the Remix project and its codebase provides a powerful example of how Remix’s own core team builds apps with Remix and Hydrogen.

Brooks Lybrand and the Remix Team

Читать полностью…

JavaScript

👀 Useful Patterns for Building HTML Tools

In many situations, you don’t need a full-on framework to build useful tools; just HTML, JavaScript and CSS in a single file will do the job fine. Simon’s become a bit of an expert by rolling out many such tools using LLMs, and shares his process and practices here. More please!

Simon Willison

Читать полностью…

JavaScript

👀 Many Devs blame Vercel for Next.js-related React security vulnerabilities.

Because making new frameworks like Next.js is relatively easy nowadays, someone with enough social influence can literally destroy Vercel's business by popularising some other framework, which, by the way, would have nearly identical problems anyway, because this was mostly the React problem itself.

Tigran Bayburtsyan

Читать полностью…

JavaScript

⚠️ 🔵 Denial of Service and Source Code Exposure in React Server Components

Security researchers have found and disclosed two additional vulnerabilities in React Server Components while attempting to exploit the patches in last week’s critical vulnerability.

If you already updated for the Critical Security Vulnerability last week, you will need to update again.

If you updated to 19.0.2, 19.1.3, and 19.2.2, these are incomplete and you will need to update again.

December 11, 2025 by The React Team

Читать полностью…

JavaScript

CHALLENGE

const curry = (fn) => {
return function curried(...args) {
if (args.length >= fn.length) {
return fn.apply(this, args);
}
return (...nextArgs) => curried(...args, ...nextArgs);
};
};

const multiply = (a, b, c) => a * b * c;
const curriedMultiply = curry(multiply);

const step1 = curriedMultiply(2);
const step2 = step1(3);
const result = step2(4);

console.log(result);

Читать полностью…

JavaScript

CHALLENGE

const promise1 = Promise.resolve(10);
const promise2 = promise1.then(x => x * 2);
const promise3 = promise2.then(x => {
console.log(x);
return x + 5;
});
const promise4 = promise2.then(x => {
console.log(x);
return x * 3;
});
Promise.all([promise3, promise4]).then(results => {
console.log(results);
});

Читать полностью…

JavaScript

🎉 JavaScript Turns 30 Years Old

Back in May 1995, a 33 year old Brendan Eich built the first prototype of JavaScript in just ten days, originally codenamed Mocha (and then LiveScript). On December 4, 1995, Netscape and Sun Microsystems officially announced 'JavaScript' in a press release as "an easy-to-use object scripting language designed for creating live online applications that link together objects and resources on both clients and servers."

Over thirty years, JavaScript has cemented its place at the heart of the Web platform, and more broadly in desktop apps, operating systems (e.g. Windows' use of React Native), mobile apps, and even on microcontrollers.

Читать полностью…

JavaScript

CHALLENGE

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

obj1.ref = obj2;
obj2.ref = obj1;

let weakRef = new WeakRef(obj1);
let registry = new FinalizationRegistry((value) => {
console.log(`Cleanup: ${value}`);
});

registry.register(obj1, 'obj1-cleaned');
obj1 = null;
obj2 = null;

console.log(weakRef.deref()?.name || 'undefined');
console.log('Script completed');

Читать полностью…

JavaScript

CHALLENGE

const data = '{"users": [{"name": "Sarah", "age": 25}, {"name": "Mike", "age": null}]}';

try {
const parsed = JSON.parse(data);
const result = parsed.users.map(user => {
return user.age ?? 'unknown';
});
console.log(result.join(' - '));
} catch (error) {
console.log('Parse error occurred');
}

const invalidJson = '{"name": "John", age: 30}';
try {
JSON.parse(invalidJson);
console.log('Success');
} catch {
console.log('Invalid');
}

Читать полностью…
Subscribe to a channel