JavaScript test
9.73K 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
❗️Что будет на выходе:

class CustomError extends Error {
constructor(message) {
super(message);
this.name = 'CustomError';
}
}

try {
try {
throw new CustomError('inner error');
} catch (e) {
console.log(e.name);
throw new Error('outer error');
}
} catch (e) {
console.log(e.message);
console.log(e instanceof CustomError);
}

Ответ: CustomError outer false

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

class Calculator {
static multiply(a, b) {
return a * b;
}

static add = (a, b) => {
return a + b;
}
}

class ScientificCalculator extends Calculator {
static multiply(a, b) {
return super.multiply(a, b) * 2;
}
}

console.log(Calculator.multiply(3, 4));
console.log(ScientificCalculator.add(5, 6));
console.log(ScientificCalculator.multiply(2, 3));

Ответ: Hello, Satah

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

const obj = {
name: 'Sarah',
regularMethod: function() {
return () => {
console.log(this.name);
};
},
arrowMethod: () => {
return () => {
console.log(this.name);
};
}
};

const regular = obj.regularMethod();
const arrow = obj.arrowMethod();
regular();
arrow();

Ответ: Sarah, undefined

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

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

const result = numbers
.map(x => x * 2)
.filter(x => x > 5)
.reduce((acc, x) => {
acc.push(x.toString());
return acc;
}, [])
.map(x => x + '!')
.join(' | ');

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

Ответ: 6! | 8! | 10! string

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

class LightMachine {
constructor() {
this.states = {
green: { next: 'yellow' },
yellow: { next: 'red' },
red: { next: 'green' }
};
this.currentState = 'green';
}

transition() {
this.currentState = this.states[this.currentState].next;
return this.currentState;
}
}

const lightMachine = new LightMachine();
let result = '';
for (let i = 0; i < 5; i++) {
result += lightMachine.transition() + ' ';
}
console.log(result.trim());

Ответ: yellow red green yellow red


JavaScript test | #JavaScript & Max
This media is not supported in your browser
VIEW IN TELEGRAM
Нейросети уже заменяют носителей языка.

В Telegram быстро набирает популярность ИИ-девушка Chatty, с которой можно голосом практиковать живой разговорный английский и ещё 12 языков на основе новейших моделей искусственного интеллекта. Попробовать можно бесплатно.

🇬🇧 Английский: @ChattyTutorBot
🇩🇪 Немецкий: @ChattyGermanBot
🇪🇸 Испанский: @ChattySpanishBot
🇫🇷 Французский: @ChattyFrenchBot
🇮🇹 Итальянский: @ChattyItalianBot
🇵🇹 Португальский: @ChattyPortugueseBot
🇨🇳 Китайский: @ChattyChineseBot
🇯🇵 Японский: @ChattyJapaneseBot
🇰🇷 Корейский: @ChattyKoreanBot
🇸🇦 Арабский: @ChattyArabicBot
🇹🇷 Турецкий: @ChattyTurkishBot
🇷🇺 Русский: @ChattyRussianBot
🇵🇱 Польский: @ChattyPolandBot
❗️Что будет на выходе:

const data = '{"name": "Maria", "age": 25, "skills": ["JavaScript", "Python"]}';

try {
const parsed = JSON.parse(data);
const modified = {
...parsed,
age: parsed.age + 5,
skills: [...parsed.skills, "TypeScript"]
};

const serialized = JSON.stringify(modified, null, 0);
const reparsed = JSON.parse(serialized);

console.log(reparsed.skills.length);
console.log(typeof reparsed.age);
} catch (error) {
console.log('Parse error');
}

Ответ: 3, number

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


const str = 'JavaScript';
const result1 = str.slice(-6, -2);
const result2 = str.substring(-6, -2);
const result3 = str.substr(-6, 4);
const combined = [result1, result2, result3];
const final = combined.map(s => s || 'empty').join(' | ');
console.log(final);


Ответ: Scri | empty | Scri

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

class Observable {
constructor(subscribe) {
this.subscribe = subscribe;
}

map(fn) {
return new Observable(observer => {
return this.subscribe({
next: value => observer.next(fn(value)),
error: err => observer.error(err),
complete: () => observer.complete()
});
});
}
}

const source = new Observable(observer => {
observer.next(1);
observer.next(2);
observer.complete();
});

const doubled = source.map(x => x * 2);
doubled.subscribe({
next: value => console.log(value),
complete: () => console.log('done')
});

Ответ: 2 4 done


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

const original = {
name: 'Sarah',
scores: [85, 92, 78],
details: {
age: 25,
city: 'Portland'
}
};

const copy1 = { ...original };
const copy2 = JSON.parse(JSON.stringify(original));

copy1.name = 'Emma';
copy1.scores.push(95);
copy1.details.age = 30;

console.log(original.name, original.scores.length, original.details.age);

Ответ: Sarah 4 30

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

const firstArrayData = [ 'JavaScript', 'Universe' ];
const secondArrayData = [ 'JavaScript', 'Universe' ];

console.log(firstArrayData == secondArrayData);
console.log(firstArrayData === secondArrayData);

Ответ: false, false

JavaScript test | #JavaScript & Max
Как продажник создал ИИ-сервис без кода

Мой знакомый никогда не был связан с IT, он работал в продажах и использовал ИИ максимум для генерации мемов)) Но на днях он рассказал, что за пару вечеров собрал ИИ-ассистента который слушает звонки и заполняет CRM-отчеты вручную.

Продукт так зашел коллегам, что его раскатили на весь отдел, и теперь парень настраивает сервер, чтобы упаковать сервис в платную подписку и запустить полноценный доп. доход.

Эта история еще раз доказала мне::
ИИ полностью стер барьеры. Чтобы создавать свои проекты, автоматизировать работу или зайти в сферу технологий, больше не нужно знаний в ИТ


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

Внутри есть всё для развития в этой сфере: от фишек нейрогенерации и правильных промтов до ИТ, вайб-кодинга и ИБ.

👉https://t.me/addlist/ANMlv27Ktbk1ZGEy
❗️Что будет на выходе:

const userInput = "<script>alert('xss')</script>";
const sanitized = userInput.replace(/<script[^>]*>.*?<\/script>/gi, '');

const users = new Map();
users.set('admin', { password: 'secret123', role: 'admin' });
users.set('guest', { password: 'guest', role: 'user' });

function authenticate(username, password) {
const user = users.get(username);
return user && user.password === password ? user.role : null;
}

const role1 = authenticate('admin', 'secret123');
const role2 = authenticate('guest', 'wrong');
const role3 = authenticate('hacker', 'secret123');

console.log(sanitized);
console.log(role1, role2, role3);

Ответ: admin null null

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

const matrix = [
[2, 4],
[6, 8],
];

const result = matrix.reduceRight((acc, row) => acc.concat(row.map(num => num * 2)), []);

console.log(result);

Ответ: [12, 16, 4, 8]

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

function main({ x, y } = { x: 1, y: 2 }) {
console.log(x, y);
}

main({ x: 5 });

Ответ: 5, undefined

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

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

const original = numbers.slice();
original.reverse();

const flattened = [[1, 2], [3], [4, 5]].flat();
const found = flattened.find(n => n > 3);

console.log(result);
console.log(original.length);
console.log(found);

Ответ: [12, 16, 4, 8]

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

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

const pipeline = (...fns) => (value) => fns.reduce((acc, fn) => fn(acc), value);

const multiply = (x) => (y) => x * y;
const add = (x) => (y) => x + y;
const square = (x) => x * x;

const transform = pipeline(
multiply(2),
add(3),
square
);

const result = numbers.map(transform);
console.log(result);

Ответ: [25, 49, 81, 121, 169]

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

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());

Ответ: 2 0

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

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);

Ответ: [ 1, 16, 49, 100 ]

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

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");

Ответ: A D B C

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

const createModule = (() => {
const privateCache = new WeakMap();

return function(name) {
const state = { name, version: 1, active: true };
privateCache.set(state, { accessCount: 0 });

return {
getInfo() {
const meta = privateCache.get(state);
meta.accessCount++;
return `${state.name}@v${state.version}`;
},
getAccessCount() {
return privateCache.get(state).accessCount;
},
upgrade() {
state.version++;
return this;
}
};
};
})();

const mod = createModule("auth");
mod.upgrade().upgrade();
console.log(mod.getInfo());
console.log(mod.getAccessCount());

Ответ: auth@v3 1

JavaScript test | #JavaScript & Max