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

Ссылка: @Portal_v_IT

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

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

РКН: clck.ru/3KHeYk
Download 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
❗️Что будет на выходе:

function Person(name) {
this.name = name;
this.sayName = () => console.log(this.name);
}

const person1 = new Person('David');
const person2 = { name: 'Not David', sayName: person1.sayName };

person2.sayName();

Ответ: David

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

const sym1 = Symbol('test');
const sym2 = Symbol('test');
const obj = {
[sym1]: 'first',
[sym2]: 'second',
regular: 'third'
};

const keys = Object.keys(obj);
const symbols = Object.getOwnPropertySymbols(obj);
const allProps = Reflect.ownKeys(obj);

console.log(keys.length);
console.log(symbols.length);
console.log(allProps.length);
console.log(sym1 === sym2);

Ответ: 1 2 3 false

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

const sym1 = Symbol('test');
const sym2 = Symbol('test');
const obj = {
[sym1]: 'first',
[sym2]: 'second',
regular: 'third'
};

const keys = Object.keys(obj);
const symbols = Object.getOwnPropertySymbols(obj);
const allProps = Reflect.ownKeys(obj);

console.log(keys.length);
console.log(symbols.length);
console.log(allProps.length);
console.log(sym1 === sym2);

Ответ: 1 2 3 false

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

class Vehicle {
#engine = 'V6';
static count = 0;

constructor(type) {
this.type = type;
Vehicle.count++;
}

static getCount() {
return this.count;
}

get info() {
return `${this.type} with ${this.#engine}`;
}
}

class Car extends Vehicle {
static count = 0;

constructor(brand) {
super('car');
this.brand = brand;
Car.count++;
}
}

const tesla = new Car('Tesla');
const ford = new Car('Ford');
console.log(Vehicle.getCount());
console.log(Car.getCount());
console.log(tesla.info);

Ответ: 2 2 car with V6

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

function createCounter() {
let count = 0;

const counter = {
increment() {
count++;
return count;
},
getCount() {
return count;
}
};

return counter;
}

let c1 = createCounter();
c1.increment();
c1.increment();

let c2 = c1;
c1 = null;

console.log(c2.getCount());

Ответ: 2

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

async function fetchData() {
return Promise.resolve('data');
}

async function processData() {
console.log('start');
const result = fetchData();
console.log(typeof result);
const data = await fetchData();
console.log(typeof data);
console.log('end');
}

processData();

Ответ: start object string end

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

let x = 5;

function foo() {
console.log(x);
let x = 10;
console.log(x);
}

foo();

Ответ: ReferenceError: Cannot access 'x' before initialization

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

const team = {
members: ['Alice', 'Bob', 'Charlie'],
[Symbol.iterator]: function*() {
let index = 0;
while(index < this.members.length) {
yield this.members[index++].toUpperCase();
}
}
};

const result = [];
for (const member of team) {
result.push(member);
}

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

Ответ: ALICE-BOB-CHARLIE

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

const obj = {};
let value = 0;

Object.defineProperty(obj, 'prop', {
get() {
return value;
},
set(newValue) {
value = newValue + 1;
},
configurable: true,
enumerable: true
});

obj.prop = 10;
console.log(obj.prop);

Ответ: 11

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

const a = async () => {
return Promise.reject('rejected');
};

a().catch(error => console.log(error));
console.log('done');

Ответ: 'done', 'rejected'

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

const map = new WeakMap();

let obj1 = { name: 'user1' };
let obj2 = { name: 'user2' };

map.set(obj1, 'data for user1');
map.set(obj2, 'data for user2');

console.log(map.has(obj1));
obj1 = null;

console.log(map.has(obj1));
console.log(map.get(obj2));

Ответ: true, false, data, for user2

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

function Person(name) {
this.name = name;
this.sayName = () => console.log(this.name);
}

const person1 = new Person('David');
const person2 = { name: 'Not David', sayName: person1.sayName };

person2.sayName();

Ответ: David

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

const user = {
name: 'Sarah',
age: 28,
getName() {
return this.name;
}
};

const { getName } = user;
const boundGetName = user.getName.bind(user);

console.log(getName());
console.log(boundGetName());
console.log(user.getName());

Ответ: undefined Sarah Sarah

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

function* outer() {
yield 1;
yield* inner();
yield 4;
}

function* inner() {
yield 2;
yield 3;
}

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

Ответ: 1 2 3 4
JavaScript test | #JavaScript