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
- Последний пост
- 15:33
- Последнее чтение
- 07:51
- Постов за неделю
- 19
- Всего постов
- 27
- Тип
- открытый
- Язык
- английский
- Категория
- Книги
- В каталоге с
- 13 авг.
- 1/24сутки в ленте
- 1 187
- 1/48двое суток
- 1 360
- 1/72трое суток
- 1 467
Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.
Посты
Did you know JavaScript supports a third type of comment (beyond // and /* */)? 😉 Mat Marquis shows off hashbang comments in a short YouTube video. And yes, they're in the language spec!
видео или голосовое, без подписи
CHALLENGE function test() { try { console.log(y); } catch (e) { return e.constructor.name; } } let result1 = test(); let y = 'hoisted'; console.log(result1, typeof y, y);
👀 anydoc: Convert 14 Document Formats into Markdown A Rust-powered library (with Node.js and WASM bindings) that converts Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, and PDF documents into Markdown. I tried it on a 1,600 page PDF and it took less than 2 seconds. There's also an in-browser demo to try it out. GitHub repo. Firecrawl
видео или голосовое, без подписи
CHALLENGE const arr = [1, 2, 3, 4, 5]; arr[Symbol.iterator] = function* () { for (let i = 0; i < 3; i++) yield arr[i] * 2; }; console.log([...arr], JSON.stringify(arr));
🤟 Node.js 26.7.0 (Current) Released Landing just two days after 26.6, coverage reports can now include files your tests didn't touch with --test-coverage-include-all, FFI and SQLite pick up crash fixes, and Perfetto tracing support lands, though you'll need a custom build to use it. Antoine du Hamel
видео или голосовое, без подписи
CHALLENGE class Money { #amount; constructor(amount) { this.#amount = amount; } [Symbol.toPrimitive](hint) { if (hint === 'number') return this.#amount; if (hint === 'string') return `$${this.#amount}`; return `Money(${this.#amount})`; } } const m = new Money(42); console.log(`${m}`, m + 8, m == 42);
↗️ TanStack Charts: A New Chart Grammar Option In the past few weeks, TanStack has been rapidly iterating on a new, framework-neutral way to declaratively specify a large number of chart-related visualizations in JavaScript. Output renders to SVG or canvas and can be styled as you wish. Here's a comparison against other established options. TanStack
видео или голосовое, без подписи
CHALLENGE const str = "2024-01-15"; const result = str.replace(/(\d+)-(\d+)-(\d+)/, "$3/$2/$1"); const s2 = "abc".padStart(6, "12"); const s3 = [..."hello"].reverse().join(""); console.log(result, s2, s3);
👀 Next.js 16.3 Released The newly expanded Next.js team (now including Dan Abramov and 𝕏 Pete Hunt!) has dropped the latest version of the popular React framework, complete with faster builds, optional TypeScript 7 type checking, faster SSR, Instant Navigations, AI improvements, and more. The Next.js Team
видео или голосовое, без подписи
CHALLENGE function memoize(fn) { const cache = new Map(); return (...args) => { const key = JSON.stringify(args); if (cache.has(key)) return cache.get(key); const result = fn(...args); cache.set(key, result); return result; }; } let calls = 0; const add = memoize((a, b) => { calls++; return a + b; }); const r1 = add(1, 2); const r2 = add(2, 1); const r3 = add(1, 2); console.log(r1, r2, r3, calls);
видео или голосовое, без подписи
CHALLENGE const Loggable = { log() { return `[${this.constructor.name}] ${this.toString()}`; } }; class Base { toString() { return 'Base instance'; } } Object.setPrototypeOf(Base.prototype, Loggable); class Derived extends Base { toString() { return 'Derived instance'; } } const b = new Base(); const d = new Derived(); console.log(b.log(), d.log(), Object.getPrototypeOf(Derived.prototype) === Base.prototype);
видео или голосовое, без подписи
CHALLENGE class Config { constructor(options = {}) { this.retries = options.retries ?? 3; this.timeout = options.timeout ?? 1000; } } const cfg1 = new Config({ retries: 0, timeout: null }); const cfg2 = new Config({ retries: undefined, timeout: false }); cfg1.retries ??= 99; cfg2.timeout ??= 99; console.log(cfg1.retries, cfg1.timeout, cfg2.retries, cfg2.timeout);
видео или голосовое, без подписи