JavaScript test
9.74K subscribers
3.07K photos
14 videos
4.72K links
Проверка своих знаний по языку JavaScript.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: telega.in/c/js_test

РКН: clck.ru/3KHeYk
Download Telegram
❗️Что будет на выходе:

let a = 1;
setTimeout(() => {
a = 2;
}, 0);
console.log(a);

Ответ: 1


JavaScript test | #JavaScript & Max
❗️Что будет на выходе:

class DataProcessor {
constructor(value) {
this.value = value;
}

transform(fn) {
return new DataProcessor(fn(this.value));
}

getValue() {
return this.value;
}
}

const multiply = x => x * 2;
const add = x => x + 10;
const square = x => x * x;

const result = new DataProcessor(5)
.transform(multiply)
.transform(add)
.transform(square)
.getValue();

console.log(result);

Ответ: 400

JavaScript test | #JavaScript & Max
❗️Что будет на выходе:

var a = 0, b = 0, arr = [3, 6, 9, 6, 9, 3];
var data = arr.some((x, i)=>{
a = arr[i];
b = arr[i + 1];
return a + b == 15
})
console.log(data)
console.log(a, b)

Ответ: true
6 9


JavaScript test | #JavaScript & Max
❗️Что будет на выходе:

const numbers = [1, 2, 3, 4, 5];

const result = numbers
.map(n => n * 2)
.filter(n => n > 5)
.reduce((acc, n, index) => {
acc.sum += n;
acc.indices.push(index);
return acc;
}, { sum: 0, indices: [] });

console.log(result.sum);
console.log(result.indices);

Ответ: 18 [0, 1, 2]

JavaScript test | #JavaScript & Max
❗️Что будет на выходе:

"use strict";

function createCounter() {
let count = 0;

return {
increment() { count++; },
get value() { return count; },
toString() { return `Counter: ${count}`; }
};
}

const counter = createCounter();
counter.increment();
counter.increment();
counter.increment();

try {
counter.value = 99;
} catch (e) {
console.log(`${e.constructor.name}: ${counter}`);
}

Ответ: TypeError: Counter: 3
JavaScript test | #JavaScript & Max
❗️Что будет на выходе:

const 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 callCount = 0;

const expensiveMultiply = memoize((a, b) => {
callCount++;
return a * b;
});

console.log(expensiveMultiply(4, 5));
console.log(expensiveMultiply(4, 5));
console.log(expensiveMultiply(3, 7));
console.log(expensiveMultiply(4, 5));
console.log(`calls: ${callCount}`);

Ответ: 20 20 21 20 calls: 2
JavaScript test | #JavaScript & Max
❗️Что будет на выходе:


class Registry {
static #instances = new Map();
static #count = 0;
static defaultTTL;
static maxSize;

static {
Registry.defaultTTL = 3600;
Registry.maxSize = 100;
Registry.#instances.set("__init__", { ts: 0 });
Registry.#count = Registry.#instances.size;
}

static register(key) {
if (Registry.#count >= Registry.maxSize) return false;
Registry.#instances.set(key, { ts: Registry.defaultTTL });
Registry.#count++;
return true;
}

static info() {
return `count=${Registry.#count}, ttl=${Registry.defaultTTL}, max=${Registry.maxSize}`;
}
}

Registry.register("service-a");
Registry.register("service-b");
console.log(Registry.info());


Ответ: count=3, ttl=3600, max=100

JavaScript test | #JavaScript & Max
⚡️В России запустили первую онлайн-магистратуру по искусственному интеллекту

Её создали Университет Иннополис и Зерокодер, обучивший работе с ИИ более 15 000 человек. Для рынка это большой прорыв – раньше такой программы просто не было.

Что даёт магистратура лично вам:

- Вы запускаете собственный ИИ-продукт за время учёбы – он же становится дипломной работой;
- Осваиваете ИИ, no-code и вайб-кодинг без программирования, техническая база не нужна;
- Получаете диплом магистра государственного образца и отсрочку от армии;
- Учитесь онлайн из любого города, без отрыва от работы;
- Попадаете в среду практиков: основатели, венчурные инвесторы, выпускник Y Combinator; практика – в Т-Банке, Яндексе, Сбере.

Программа платная. Но чтобы разобраться, подходит ли она вам, поступать прямо сейчас не нужно.

7 июля в 13:00 МСК пройдёт бесплатный День открытых дверей
. На нём выпускники и студенты лично расскажут, как собрали свои продукты – среди них вирусный ИИ-сервис и B2B-платформа, которой уже пользуются 70 компаний. Приёмная комиссия ответит на ваши вопросы и разберёт детали поступления.

Никаких обязательств: приходите, узнайте и оцените возможности – для этого День открытых дверей и проводится.

Мест на потоке осталось всего 9, к августу их не останется вовсе. Поэтому анонсируем заранее – разберитесь 7 июля.

Регистрация бесплатная по ссылке.
❗️Что будет на выходе:


const handler = {
get(target, prop, receiver) {
if (prop in target) {
return Reflect.get(target, prop, receiver) * 2;
}
return `missing:${prop}`;
},
set(target, prop, value) {
if (typeof value !== "number") {
throw new TypeError("Only numbers allowed");
}
Reflect.set(target, prop, value + 10);
return true;
},
has(target, prop) {
return prop.startsWith("x") ? false : prop in target;
},
};

const store = new Proxy({ xray: 5, zoom: 8 }, handler);

store.nova = 3;
console.log(store.xray);
console.log(store.nova);
console.log(store.ghost);
console.log("zoom" in store);
console.log("xray" in store);


Ответ: 10 26 missing:ghost true false

JavaScript test | #JavaScript & Max
❗️Что будет на выходе:

const compose = (...fns) => x => fns.reduceRight((acc, fn) => fn(acc), x);
const pipe = (...fns) => x => fns.reduce((acc, fn) => fn(acc), x);

const double = x => x * 2;
const addTen = x => x + 10;
const square = x => x ** 2;
const negate = x => -x;

const composed = compose(negate, square, addTen, double);
const piped = pipe(negate, square, addTen, double);

const val = 3;

console.log(composed(val)); // compose: right-to-left
console.log(piped(val)); // pipe: left-to-right

Ответ: -256 38

JavaScript test | #JavaScript & Max
❗️Что будет на выходе:

class Session {
#id;
constructor(id) {
this.#id = id;
}
getId() {
return this.#id;
}
}

const activeSessions = new WeakSet();

const s1 = new Session("alpha");
const s2 = new Session("beta");
let s3 = new Session("gamma");

activeSessions.add(s1);
activeSessions.add(s2);
activeSessions.add(s3);

console.log(activeSessions.has(s1));
console.log(activeSessions.has(s3));

activeSessions.delete(s2);
console.log(activeSessions.has(s2));

try {
activeSessions.add("invalid");
} catch (e) {
console.log(e instanceof TypeError);
}

console.log(activeSessions.has(s1));

Ответ: true true false true true

JavaScript test | #JavaScript & Max
❗️Что будет на выходе:

const handler = {
get(target, prop, receiver) {
if (prop in target) {
return Reflect.get(target, prop, receiver) * 2;
}
return Reflect.get(target, prop, receiver);
},
set(target, prop, value, receiver) {
if (typeof value !== "number") return false;
return Reflect.set(target, prop, value * 3, receiver);
},
has(target, prop) {
return prop.startsWith("x") && Reflect.has(target, prop);
},
};

const obj = new Proxy({ x1: 10, y1: 20 }, handler);
obj.x2 = 15;
obj.y2 = 40;

console.log(obj.x1);
console.log(obj.x2);
console.log("x1" in obj);
console.log("y1" in obj);
console.log(obj.y2);

Ответ: 20 90 true false 240

JavaScript test | #JavaScript & Max
❗️Что будет на выходе:

function* range(start, end) {
while (start < end) {
yield start++;
}
}

function* labeled(prefix, gen) {
for (const val of gen) {
yield `${prefix}:${val}`;
}
}

function* pipeline() {
yield* labeled("A", range(1, 4));
yield* labeled("B", range(10, 12));
}

const results = [...pipeline()];
console.log(results.length, results[0], results[results.length - 1]);

Ответ: 5 A:1 B:11

JavaScript test | #JavaScript & Max
❗️Что будет на выходе:

function Vehicle(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
this.describe = function () {
return `${this.year} ${this.make} ${this.model}`;
};
}

Vehicle.prototype.age = function (currentYear) {
return currentYear - this.year;
};

const car = new Vehicle("Toyota", "Supra", 1998);
const truck = new Vehicle("Ford", "Raptor", 2021);

console.log(car.describe());
console.log(truck.age(2025));
console.log(car.constructor === Vehicle);
console.log(Object.getPrototypeOf(car) === Vehicle.prototype);

Ответ: 1998 Toyota Supra 4 true true

JavaScript test | #JavaScript & Max
📣 Портативный монитор 15.6 Laptomo

Цена: ~6500₽
Рейтинг: 4.8 😀
Отзывов: 503 💬

🖱 Заказать

Портативный монитор 15.6" с IPS FHD (1920×1080) и Ultra HDR обеспечивает яркое и четкое изображение с широкими углами обзора. Оснащен матовым антибликовым экраном, защитой зрения Low Blue Light и Flicker-Free. Тонкий (8.9 мм) и легкий (697 г), комплектуется чехлом-подставкой. Подключается через USB-C и mini HDMI, совместим с ноутбуками, ПК, смартфонами, PS5, Xbox и Nintendo Switch. Поддерживает режимы дублирования и расширения экрана, работает по Plug & Play без установки драйверов.

#монитор #laptomo

Еще товары: Находки Программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
❗️Что будет на выходе:

function makeCounter(start = 0, step = 1) {
let count = start;
const history = [];

return {
increment() {
count += step;
history.push(count);
return this;
},
decrement() {
count -= step;
history.push(count);
return this;
},
getHistory: () => history,
getCount: () => count,
};
}

const counter = makeCounter(10, 3);
counter.increment().increment().decrement();

console.log(counter.getCount());
console.log(counter.getHistory());

Ответ: 13 [ 13, 16, 13 ]

JavaScript test | #JavaScript & Max
❗️Что будет на выходе:

var a = 0, b = 0, arr = [3, 6, 9, 6, 9, 3];
var data = arr.some((x, i)=>{
a = arr[i];
b = arr[i + 1];
return a + b == 15
})
console.log(data)
console.log(a, b)

Ответ: true
6 9


JavaScript test | #JavaScript & Max
❗️Что будет на выходе:

let obj = { name: 'Sarah', age: 25 };
let weakMap = new WeakMap();
let map = new Map();

weakMap.set(obj, 'weak reference');
map.set(obj, 'strong reference');

console.log(weakMap.has(obj));
console.log(map.has(obj));

obj = null;

console.log(weakMap.has(null));
console.log(map.has(null));
console.log(map.size);

Ответ: true true false false 1


JavaScript test | #JavaScript & Max
❗️Что будет на выходе:

const weakMap = new WeakMap();
const objs = [{}, {}, {}];

objs.forEach((obj, index) => weakMap.set(obj, index + 1));

const result = objs.filter(obj => weakMap.has(obj)).map(obj => weakMap.get(obj) * 2);

console.log(result);

Ответ: [2, 4, 6]


JavaScript test | #JavaScript & Max
❗️Что будет на выходе:

function createCounter() {
let count = 0;

return {
increment() {
return ++count;
},
reset() {
const oldCount = count;
count = 0;
return oldCount;
}
};
}

const counterA = createCounter();
const counterB = createCounter();

counterA.increment();
counterA.increment();
counterB.increment();
const result = counterA.reset() + counterB.reset();
console.log(result);

Ответ: 3


JavaScript test | #JavaScript & Max
❗️Что будет на выходе:

console.log(1);
setTimeout(() => console.log(2), 0);
Promise.resolve()
.then(() => {
console.log(3);
return Promise.resolve(4);
})
.then(console.log);
console.log(5);

Ответ: 1, 5, 3, 4, 2


JavaScript test | #JavaScript & Max