JavaScript test
10.2K subscribers
3.05K photos
6 videos
4.41K links
Проверка своих знаний по языку JavaScript.

Ссылка: @Portal_v_IT

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

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

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

const createMathOps = (base) => {
return {
add: (x) => base + x,
multiply: (x) => base * x
};
};

const createAdvancedMathOps = (base) => {
const basicOps = createMathOps(base);
return {
...basicOps,
square: () => basicOps.multiply(base),
addThenSquare: (x) => {
const added = basicOps.add(x);
return added * added;
}
};
};

const calculator = createAdvancedMathOps(5);
console.log(calculator.addThenSquare(3));

Ответ: 64

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

const partial = (fn, ...presetArgs) => {
return function partiallyApplied(...laterArgs) {
return fn(...presetArgs, ...laterArgs);
};
};

const calculateTax = (taxRate, discount, price) => {
const discounted = price - (price * discount) / 100;
return parseFloat((discounted + (discounted * taxRate) / 100).toFixed(2));
};

const withVAT = partial(calculateTax, 20);
const withVATandDiscount = partial(withVAT, 15);

console.log(withVAT(0, 100));
console.log(withVATandDiscount(200));
console.log(partial(calculateTax, 10, 5)(50));

Ответ: 120 204 52.25

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

function processConfig(config) {
const settings = {
timeout: config.timeout ?? 1000,
retries: config.retries ?? 3,
logging: config.logging ?? false,
debug: config.debug || true
};

return settings;
}

const userConfig = {
timeout: 0,
retries: null,
logging: false,
debug: false
};

console.log(processConfig(userConfig));

Ответ: { timeout: 0, retries: 3, logging: false, debug: true }

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

const user = {
profile: {
name: 'Alice',
social: null,
getDetails() {
return { verified: true };
}
}
};

const result = [
user?.profile?.name,
user?.profile?.social?.handle,
user.profile.getDetails?.()?.verified,
user?.nonExistent?.property
];

console.log(result);

Ответ: ['Alice', undefined, true, undefined]

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

const person = {
name: 'Alice',
greet() {
return `Hello, I'm ${this.name}`;
},
farewell: () => `Goodbye from ${this.name}`
};

const greetFn = person.greet;
const farewellFn = person.farewell;

console.log(person.greet());
console.log(greetFn());
console.log(farewellFn());

Ответ: Hello, I'm Alice Hello, I'm undefined Goodbye from undefined

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

function task1() {
console.log('A');
setTimeout(() => console.log('B'), 0);
Promise.resolve().then(() => console.log('C'));
Promise.resolve().then(() => setTimeout(() => console.log('D'), 0));
Promise.resolve().then(() => console.log('E'));
setTimeout(() => console.log('F'), 0);
console.log('G');
}

task1();

Ответ: A G C E B F D


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

function processConfig(config) {
const settings = {
timeout: config.timeout ?? 1000,
retries: config.retries ?? 3,
logging: config.logging ?? false,
debug: config.debug || true
};

return settings;
}

const userConfig = {
timeout: 0,
retries: null,
logging: false,
debug: false
};

console.log(processConfig(userConfig));

Ответ: { timeout: 0, retries: 3, logging: false, debug: true }

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

function processData(data) {
try {
if (!data) {
throw new TypeError('Data is required');
}

if (data.status === 'error') {
throw new Error('Invalid status');
}

return data.value.toUpperCase();
} catch (err) {
if (err instanceof TypeError) {
return 'Type Error';
}
return err.message;
}
}

console.log(processData({ status: 'error', value: 'test' }));

Ответ:
Invalid status

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

function analyze(...items) {
const [first, ...rest] = items;
const { length } = [...rest, 'bonus'];
const result = {
...first,
count: length,
};

console.log(result);
}

analyze({ id: 42, name: 'Item' }, 'a', 'b');


Ответ: { id: 42, name: 'Item', count: 3 }

JavaScript test | #JavaScript & Max
❗️Что будет на выходе:
let x = 5;
let result = typeof (x + "10");

console.log(result);


Ответ: string

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

function createCounter() {
let count = 0;

return {
increment() {
count++;
return count;
},
decrement() {
count--;
return count;
},
getValue() {
return count;
}
};
}

const counter1 = createCounter();
const counter2 = createCounter();

counter1.increment();
counter1.increment();
counter2.increment();
counter1.decrement();

console.log(counter1.getValue() + counter2.getValue());

Ответ: 2


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

function highlight(strings, ...values) {
return strings.reduce((result, str, i) => {
const value = values[i] ? `<span>${values[i]}</span>` : '';
return result + str + value;
}, '');
}

const language = 'JavaScript';
const years = 10;

const result = highlight`I have been coding in ${language} for ${years} years`;
console.log(result);

Ответ: I have been coding in <span>JavaScript</span> for <span>10</span> years


JavaScript test | #JavaScript & Max
Что будет с интернетом?

Сегодня «просто загуглить» нужную информацию уже не получается. Полезные ресурсы блокируются, и находить знания стало в разы сложнее, чем полгода назад.

Если вы читаете мой канал, вам точно пригодятся эти Tech-авторы. В одну подборку я собрал тех, кто пишет про IT, нейросети и безопасность — Подписывайтесь

Считаю, что в наше время нужно делиться полезной информацией со всеми, поэтому рассказываю вам про экспертов, которых читаю сам.

Внутри подборки:
• ИИ: советы по нейрогенерации, вайб-кодинг и библиотеки промптов
• Анонимность и ИБ: как полностью убрать свой след из сети и защитить данные
IT и карьера: как расти в должности и получать офферы от топовых компаний


Эта папка — самый простой способ собрать в одном месте знания, за которыми сейчас приходится охотиться!

Подписка в 1 клик:
https://t.me/addlist/OKitlbwoClVhNGFi
❗️Что будет на выходе:

setTimeout(() => console.log('Timeout 1'), 100);

setTimeout(() => {
console.log('Timeout 2');
Promise.resolve().then(() => console.log('Promise in Timeout 2'));
}, 50);

Promise.resolve().then(() => console.log('Promise 1'));

setTimeout(() => console.log('Timeout 3'), 150);

console.log('Sync');

Ответ: Sync, Promise 1, Timeout 2, Promise in Timeout 2, Timeout 1, Timeout 3


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

const memoryLeak = () => {
const cache = new Map();
const weakCache = new WeakMap();

const objKey = { id: 123 };
const data = { name: 'User data', value: 42 };

cache.set(objKey, data);
weakCache.set(objKey, data);

// Simulate removing reference to key
const result = { map: cache.has(objKey), weakMap: weakCache.has(objKey) };
// objKey = null; // This would be an error, as const can't be reassigned

return result;
};

console.log(memoryLeak());

Ответ: { map: true, weakMap: true }

JavaScript test | #JavaScript & Max
Если вы уже пробовали ChatGPT, DeepSeek или Cursor – вы знаете проблему: они помогают, но большую часть работы всё равно делаете вы.

Команда Зерокодера разобрала Claude Code и запустила бесплатный практикум, где в прямом эфире покажет, как собрать систему, в которой ИИ берет задачи на себя – без ручного кода и лишних сервисов.

Что вы получите на эфире:

– почему нейросети дают ответы, но не доводят задачи до результата – и как это исправить;
– как работать в одном окне без постоянных переключений;
– как делегировать рутину ИИ: от правок до тестов;
– как применять ИИ в работе: от MVP до автоматизаций и заработка;
– как перейти от «помощника» к системе, где ИИ реально выполняет задачи.

И главное – понятно объяснят, как из пользователя нейросетей перейти в того, кто использует ИИ на максимум.

🎁 Бонус: гайд по Claude Code + примеры внедрения

Бесплатный практикум – по ссылке.
❗️Что будет на выходе:

function processConfig(config) {
const settings = {
timeout: config.timeout ?? 1000,
retries: config.retries ?? 3,
logging: config.logging ?? false,
debug: config.debug || true
};

return settings;
}

const userConfig = {
timeout: 0,
retries: null,
logging: false,
debug: false
};

console.log(processConfig(userConfig));

Ответ: { timeout: 0, retries: 3, logging: false, debug: true }

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

const cache = new WeakMap();

const user1 = { name: 'Alice' };
const user2 = { name: 'Bob' };

cache.set(user1, { lastLogin: 'yesterday' });
cache.set(user2, { lastLogin: 'today' });

const result = [];
result.push(cache.has(user1));
result.push(cache.get(user2).lastLogin);

let user3 = { name: 'Charlie' };
cache.set(user3, { lastLogin: 'now' });
result.push(cache.has(user3));

user3 = null; // Removing the reference
// Garbage collector might run here in real situations

const user4 = { name: 'Charlie' }; // Same name, different object
result.push(cache.has(user4));

console.log(result);

Ответ: [true, 'today', true, false]


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

async function foo() {
console.log('Start');
await Promise.resolve().then(() => {
console.log('Inside Promise');
});
console.log('End');
}

foo();
console.log('Outside');

Ответ: Start, Outside, Inside, Promise, End


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

let x = 5;
let result = typeof (x + "10");

console.log(result);

Ответ: string

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

const obj = { name: 'Alice', age: 30 };
const handler = {
get(target, prop) {
return prop in target ? target[prop] : `Property '${prop}' doesn't exist`;
}
};

const proxy = new Proxy(obj, handler);

const descriptors = Object.getOwnPropertyDescriptors(obj);
Reflect.defineProperty(obj, 'city', {
value: 'New York',
enumerable: false
});

console.log(proxy.city, proxy.country);

Ответ: New York Property 'country' doesn't exist

JavaScript test | #JavaScript & Max