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

Ссылка: @Portal_v_IT

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

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

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

class Logger {
constructor(prefix) {
this.prefix = prefix;
}
log(message) {
console.log(`${this.prefix}: ${message}`);
}
}

class Database {
constructor(logger) {
this.logger = logger;
}
save(data) {
this.logger.log(`Saving ${data}`);
return `${data}_saved`;
}
}

const logger = new Logger('DB');
const db = new Database(logger);
const result = db.save('user');
console.log(result);

Ответ: DB: Saving user user_saved

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

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

const arr = [1, 2, 3, 4, 5];
const result = arr
.map(x => x * 2)
.filter(x => x > 5)
.reduce((acc, val) => {
return acc + (val % 3 === 0 ? val : 0);
}, 0);

console.log(result);

Ответ: 6

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

const ws = new WeakSet();
const obj1 = { name: 'first' };
const obj2 = { name: 'second' };
const obj3 = obj1;

ws.add(obj1);
ws.add(obj2);
ws.add(obj3);

console.log(ws.has(obj1));
console.log(ws.has(obj3));
console.log(ws.has({ name: 'first' }));
console.log(ws.size);

Ответ: true true false undefined

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

function* innerGenerator() {
yield 1;
yield 2;
return 'inner-done';
}

function* outerGenerator() {
yield 'start';
const result = yield* innerGenerator();
yield result;
yield 'end';
}

const gen = outerGenerator();
console.log(gen.next().value);
console.log(gen.next().value);
console.log(gen.next().value);
console.log(gen.next().value);
console.log(gen.next().value);

Ответ: start 1 2 inner-done end

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

function processData() {
const results = [];

for (let i = 0; i < 3; i++) {
const multiplier = i + 1;

setTimeout(() => {
results.push(i * multiplier);
}, 0);
}

setTimeout(() => {
console.log(results.join(','));
}, 10);
}

processData();

Ответ: 0,2,6

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

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

add(num) {
this.value += num;
return this;
}

multiply(num) {
this.value *= num;
return this;
}
}

const calc = new Calculator(5);
const addMethod = calc.add;
const result = addMethod.call(calc, 3).multiply(2);
console.log(result.value);

Ответ: 16

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

function getOrder() {
console.log('1');

setTimeout(() => console.log('2'), 0);

Promise.resolve().then(() => {
console.log('3');
Promise.resolve().then(() => console.log('4'));
});

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

console.log('6');
}

getOrder();

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

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

class EventEmitter {
constructor() {
this.events = new Map();
}

on(event, callback) {
if (!this.events.has(event)) {
this.events.set(event, []);
}
this.events.get(event).push(callback);
return this;
}

emit(event, ...args) {
const callbacks = this.events.get(event);
if (callbacks) {
callbacks.forEach(cb => cb(...args));
}
return this;
}
}

const emitter = new EventEmitter();
emitter.on('test', x => console.log(x * 2))
.on('test', x => console.log(x + 10))
.emit('test', 5);

Ответ: 10 15

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

function createCounter() {
let count = 0;

function increment() {
count++;
return count;
}

function decrement() {
count--;
return count;
}

return { increment, decrement, reset: () => count = 0 };
}

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

const { increment, reset } = counter;
increment();
reset();
increment();

console.log(counter.increment());

Ответ: 2

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

const obj = {
data: ['x', 'y', 'z'],
*[Symbol.iterator]() {
for (let i = this.data.length - 1; i >= 0; i--) {
yield this.data[i].toUpperCase();
}
}
};

const result = [];
for (const item of obj) {
result.push(item);
if (result.length === 2) break;
}

console.log(result.join('-'));

Ответ: Z-Y

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

function outer() {
console.log(innerVar);
console.log(typeof innerFunc);

var innerVar = 42;

function innerFunc() {
return innerVar;
}

let anotherVar = 100;
console.log(typeof anotherVar);
}

outer();

Ответ: undefined 'function' 'number'

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

console.log(MyClass);
class MyClass {
constructor() {
this.value = 42;
}
}

Ответ: Error

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

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

const sum = numbers.reduce((acc, curr) => {
setTimeout(() => {
acc += curr;
}, 0);
return acc;
}, 0);

console.log(sum);

Ответ: 0

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

function Vehicle(wheels) {
this.wheels = wheels;
}

Vehicle.prototype.getWheels = function() {
return this.wheels;
};

function Car() {
Vehicle.call(this, 4);
this.doors = 4;
}

Car.prototype = Object.create(Vehicle.prototype);
Car.prototype.constructor = Car;

const myCar = new Car();
console.log(myCar.getWheels(), myCar instanceof Vehicle);

Ответ: 4 true

JavaScript test | #JavaScript