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

Ссылка: @Portal_v_IT

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

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

РКН: clck.ru/3KHeYk
Download Telegram
❗️Что будет на выходе:
const weakMap = new WeakMap();
const obj1 = {};
const obj2 = { key: 'value' };

weakMap.set(obj1, obj2);

const result = weakMap.get(obj1).key.split('').reverse().join('');

console.log(result);

Ответ: "eulav"

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

class VideoCall {
constructor() {
this.pc = { iceConnectionState: 'new' };
this.streams = [];
}

async connect() {
this.pc.iceConnectionState = 'checking';
await Promise.resolve();
this.pc.iceConnectionState = 'connected';
this.streams.push('remote-video');
return this.pc.iceConnectionState;
}

handleConnectionChange() {
const states = ['new', 'checking', 'connected'];
return states.map(state => {
return this.pc.iceConnectionState === state ? `Status: ${state}` : null;
}).filter(Boolean);
}
}

const call = new VideoCall();
call.connect().then(() => {
console.log(call.handleConnectionChange());
});


Ответ: ['Status: connected']

JavaScript test | #JavaScript
❗️Что будет на выходе:
const obj = {
a: 1,
then(resolve) {
resolve(this.a);
}
};

obj.then(console.log);


Ответ: 1

JavaScript test | #JavaScript
❗️Что будет на выходе:
console.log('Start');

setTimeout(() => {
console.log('Timeout 1');
}, 0);

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

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

console.log('End');

Ответ: Start, End, Promise 1, Promise 2, Timeout 1, Timeout 2

JavaScript test | #JavaScript
❗️Что будет на выходе:
function getItems(fruitList, ...args, favoriteFruit) {
return [...fruitList, ...args, favoriteFruit]
}

getItems(["banana", "apple"], "pear", "orange")


Ответ: SyntaxError

JavaScript test | #JavaScript
❗️Что будет на выходе:
const obj = {
value: 1,
increment() {
this.value++;
}
};

const increment = obj.increment;
increment();

console.log(obj.value);

Ответ: 1

JavaScript test | #JavaScript
❗️Что будет на выходе:
const num = 9;
const str = num.toString().padStart(3, "0");
console.log(str);

Ответ: 009

JavaScript test | #JavaScript
❗️Что будет на выходе:
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
❗️Что будет на выходе:
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
❗️Что будет на выходе:
console.log(2 + 2 % 3);

Ответ: 4

JavaScript test | #JavaScript
❗️Что будет на выходе:
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
❗️Что будет на выходе:
const str = "a 1 b 2 c 3 d 04";

function foo(str) {
const regex = /\d+/g;
const matches = str.match(regex);
return matches.lenght;
}


Ответ: 4

JavaScript test | #JavaScript
❗️Что будет на выходе:
const obj = { a: 1, b: 2 };
const proxy = new Proxy(obj, {
get(target, prop) {
return prop in target ? target[prop] : 0;
}
});

console.log(proxy.a, proxy.b, proxy.c);


Ответ: 1, 2, 0

JavaScript test | #JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
❗️Что будет на выходе:
const target = { name: 'Sarah', age: 25 };

const handler = {
get(obj, prop) {
if (prop in obj) {
return obj[prop];
}
return `Property '${prop}' not found`;
},
set(obj, prop, value) {
obj[prop] = value.toString().toUpperCase();
return true;
}
};

const proxy = new Proxy(target, handler);
proxy.city = 'boston';
console.log(proxy.name);
console.log(proxy.city);
console.log(proxy.country);


Ответ: Sarah BOSTON Property 'country' not found

JavaScript test | #JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
❗️Что будет на выходе:
class Rectangle {
constructor(width, height) {
this.width = width;
this.height = height;
}

get area() {
return this.width * this.height;
}
}

const rectangle = new Rectangle(5, 10);
console.log(rectangle.area());


Ответ: TypeError: rectangle, area is not a function at line 13

JavaScript test | #JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
❗️Что будет на выходе:

var a=[1,2,3,4,5];
a.every(x=>{
console.log(x);
return x<4;
})


Ответ:
1
2
3
4


JavaScript test | #JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
❗️Что будет на выходе:
const numbers = [1, 2, 3];
numbers.push(4);
console.log(numbers);

Ответ: [1, 2, 3, 4]

JavaScript test | #JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
❗️Что будет на выходе:
class Counter {
constructor(max) {
this.max = max;
}

*[Symbol.iterator]() {
let current = 0;
while (current < this.max) {
yield current++;
}
}
}

const counter = new Counter(3);
const result = [...counter, ...counter];
console.log(result);

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

JavaScript test | #JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
❗️Что будет на выходе:
const x = [1, 2, 3, 4, 5];
console.log(x.slice(1, 3));

Ответ: [2, 3]

JavaScript test | #JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM