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
Показати більше📈 Аналітичний огляд Telegram-каналу JavaScript
Канал JavaScript (@javascript) у мовному сегменті Англійська є активним учасником. На даний момент спільнота об'єднує 31 150 підписників, посідаючи 4 164 місце в категорії Технології та додатки та 12 815 місце у регіоні Індія.
📊 Показники аудиторії та динаміка
З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 31 150 підписників.
За останніми даними від 18 вересня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на -99, а за останні 24 години на -9, загальне охоплення залишається високим.
- Статус верифікації: Не верифікований
- Рівень залученості (ER): Середній показник залученості аудиторії становить 6.21%. Протягом перших 24 годин після публікації контент зазвичай збирає 2.30% реакцій від загальної кількості підписників.
- Охоплення публікацій: В середньому кожен допис отримує 1 935 переглядів. Протягом першої доби публікація в середньому набирає 718 переглядів.
- Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 5.
- Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як javascript, console.log(gen.next().value, processdata, remix, acc.
📝 Опис та контентна політика
Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“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”
Завдяки високій частоті оновлень (останні дані отримано 19 вересня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.
class EventEmitter {
#listeners = new Map();
on(event, listener) {
if (!this.#listeners.has(event)) {
this.#listeners.set(event, []);
}
this.#listeners.get(event).push(listener);
return this;
}
emit(event, ...args) {
const handlers = this.#listeners.get(event) ?? [];
handlers.forEach(fn => fn(...args));
return this;
}
}
const emitter = new EventEmitter();
const log = [];
emitter
.on("data", val => log.push(`A:${val}`))
.on("data", val => log.push(`B:${val * 2}`))
.on("end", () => log.push("done"));
emitter.emit("data", 5).emit("data", 3).emit("end");
console.log(log.join(","));
const p1 = new Promise((resolve) => {
console.log("A");
resolve("B");
});
const p2 = p1.then((val) => {
console.log(val);
return "C";
});
p2.then((val) => console.log(val));
console.log("D");
class Range {
constructor(start, end, step = 1) {
this.start = start;
this.end = end;
this.step = step;
}
[Symbol.iterator]() {
let current = this.start;
const { end, step } = this;
return {
next() {
if (current <= end) {
const value = current;
current += step;
return { value, done: false };
}
return { value: undefined, done: true };
}
};
}
}
const range = new Range(1, 10, 3);
const result = [...range].map(n => n ** 2);
console.log(result);const handler = {
get(target, prop, receiver) {
if (prop in target) {
const value = Reflect.get(target, prop, receiver);
return typeof value === "number" ? value * 2 : value;
}
return `Property "${prop}" not found`;
},
set(target, prop, value) {
if (typeof value !== "number") {
throw new TypeError("Only numbers allowed");
}
Reflect.set(target, prop, value ** 2);
return true;
},
has(target, prop) {
return prop.startsWith("_") ? false : prop in target;
},
};
const store = new Proxy({ _secret: 99, score: 5 }, handler);
store.level = 3;
console.log(store.score);
console.log(store.level);
console.log("_secret" in store);
console.log("score" in store);
console.log(store._secret);const name = "Taylor";
const age = 28;
const role = "engineer";
const user = {
name,
age,
role,
greet() {
return `Hi, I'm ${this.name}, age ${this.age}`;
},
get info() {
return `${this.role.toUpperCase()} @ ${this.age}`;
}
};
const { name: userName, info, greet } = user;
console.log(userName);
console.log(info);
console.log(greet.call({ name: "Jordan", age: 35 }));class Pipeline {
#value;
#log = [];
constructor(value) {
this.#value = value;
}
map(fn) {
this.#value = fn(this.#value);
this.#log.push(`map:${this.#value}`);
return this;
}
filter(fn) {
if (Array.isArray(this.#value)) {
this.#value = this.#value.filter(fn);
this.#log.push(`filter:${this.#value}`);
}
return this;
}
reduce(fn, init) {
if (Array.isArray(this.#value)) {
this.#value = this.#value.reduce(fn, init);
this.#log.push(`reduce:${this.#value}`);
}
return this;
}
result() {
console.log(this.#log.join(' | '));
return this.#value;
}
}
new Pipeline([1, 2, 3, 4, 5, 6])
.filter(n => n % 2 === 0)
.map(arr => arr.map(n => n ** 2))
.reduce((acc, n) => acc + n, 0)
.result();
function createCounter() {
let count = 0;
return {
increment() { count++; },
decrement() { count--; },
getCount() { return count; },
reset: () => { count = 0; }
};
}
const counter = createCounter();
counter.increment();
counter.increment();
counter.increment();
counter.decrement();
const { getCount, reset } = counter;
console.log(counter.getCount());
reset();
console.log(getCount());function processData(value) {
let result = "start";
try {
result += " -> try";
if (value === null) throw new TypeError("Null value");
if (value < 0) throw new RangeError("Negative value");
result += " -> success";
return result;
} catch (e) {
result += ` -> catch(${e.constructor.name})`;
return result;
} finally {
result += " -> finally";
console.log(result);
}
}
console.log(processData(null));