JavaScript test
9.69K subscribers
3.08K photos
14 videos
4.75K links
Проверка своих знаний по языку JavaScript.

Ссылка: @Portal_v_IT

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

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

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

const user = {
name: 'Alice',
age: 30
};

const handler = {
get(target, prop) {
if (prop in target) {
return target[prop];
}
return `Property '${prop}' doesn't exist`;
},
set(target, prop, value) {
if (prop === 'age' && typeof value !== 'number') {
console.log(`Error: ${value} is not a valid age`);
return false;
}
target[prop] = value;
return true;
}
};

const userProxy = new Proxy(user, handler);
userProxy.age = '31';
userProxy.job = 'Developer';

console.log(userProxy.job);


Ответ: Error: 31 is not a valid age Developer

JavaScript test | #JavaScript
❗️Что будет на выходе:
const original = Object.freeze({ a: [1, 2, 3] });
const copy = { ...original };

copy.a.push(4);

console.log(original.a);
console.log(copy.a);

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

JavaScript test | #JavaScript
❗️Что будет на выходе:
function process(data) {
try {
if (!data) {
throw new TypeError('No data provided');
}

if (Array.isArray(data)) {
return data.map(item => item * 2);
}

if (typeof data === 'object') {
return Object.keys(data);
}

return data.toString();
} catch (error) {
if (error instanceof TypeError) {
return 'Type error occurred';
}
return 'Unknown error';
}
}

console.log(process(null));

Ответ: Type error occured

JavaScript test | #JavaScript
❗️Что будет на выходе:
var a = ( function a() {
return '1';
},
function b() {
return 2;
})()
alert(typeof a)

Ответ: number

JavaScript test | #JavaScript
❗️Что будет на выходе:
function Animal(name) {
this.name = name;
}

Animal.prototype.speak = function() {
return `${this.name} makes a noise.`;
};

function Dog(name) {
Animal.call(this, name);
}

Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;

Dog.prototype.speak = function() {
return `${this.name} barks.`;
};

const animal = new Animal('Rover');
const dog = new Dog('Rex');

console.log(dog instanceof Animal, dog.speak(), animal.speak(), Dog.prototype.isPrototypeOf(dog));

Ответ: true 'Rex barks.' 'Rover makes a noise.' true

JavaScript test | #JavaScript
❗️Что будет на выходе:
function processData({ a = 10, b = 20 } = { a: 30 }) {
console.log(a, b);
}

processData({ a: 5 });
processData();

Ответ: 5 20 30 20

JavaScript test | #JavaScript
Forwarded from Русский Уолл-стрит
ЦБ РФ может понизить ключевую ставку до 17% уже к концу этого года. Такой прогноз дал в интервью Reuters первый зампред правления Сбера Александр Ведяхин. Резкого снижения ставки ждать не стоит, ведь, по его словам, есть риск того, что инфляция снова пойдёт вверх.

Александр Ведяхин считает, что снижение ставки с 21 до 20% существенно не влияет на экономику. Скорее, это хороший психологический сигнал и знак возможного возобновления инвестиционного цикла и инвестиционных кредитов. @streetwall
❗️Что будет на выходе:
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
❗️Что будет на выходе:
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
❗️Что будет на выходе:
const weakMap = new WeakMap();
const array = [{}, {}];

array.forEach(obj => weakMap.set(obj, obj));
const result = array.map(obj => weakMap.get(obj) === obj);

console.log(result);

Ответ: [true, true]

JavaScript test | #JavaScript
❗️Что будет на выходе:
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
❗️Что будет на выходе:
const array = Array.from({ length: 5 }, () => Math.random() > 0.5);

console.log(array);


Ответ: An array of 5 random true/false values

JavaScript test | #JavaScript
❗️Что будет на выходе:
class ShoppingCart {
constructor() {
if (ShoppingCart.instance) {
return ShoppingCart.instance;
}

this.items = [];
ShoppingCart.instance = this;
}

addItem(item) {
this.items.push(item);
}

getItems() {
return [...this.items];
}
}

const cart1 = new ShoppingCart();
const cart2 = new ShoppingCart();

cart1.addItem('Book');
cart2.addItem('Laptop');

console.log(cart1.getItems());


Ответ: ['Book', 'Laptop']

JavaScript test | #JavaScript
❗️Что будет на выходе:
const sym = Symbol('unique');
const obj = {
[sym]: 'symbol value',
a: 1,
b: 2
};

const keys = Object.keys(obj);
const symbols = Object.getOwnPropertySymbols(obj);

console.log(keys.length, symbols.length);


Ответ: 2, 1

JavaScript test | #JavaScript
❗️Что будет на выходе:
const array = [1, 2, 3, 4, 5];

const result = array.map(num => Promise.resolve(num * 2));

console.log(result);


Ответ: [Promise, Promise, Promise, Promise, Promise]

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

console.log(result);


Ответ: string

JavaScript test | #JavaScript
Маркетинг за 4 дня: бесплатно!

Зарплата начинающего маркетолога от 70 000₽, а стоимость обучения на профессию в онлайн-школах основам от 120 000 до 250 000 рублей.

Сейчас Skillbox дарит мини-курс на 4 дня: попробуйте себя в интернет-маркетинге, SMM, таргетинге и копирайтинге. Только практика, полезные чек-листы и доступ к материалам навсегда.

Переходите по ссылке и забирайте курс по маркетингу. Акция продлится до 19 мая: https://go.avnxt.site/8b2d902d157e1120?erid=2VfnxxcSezk&m=1
❗️Что будет на выходе:
const handler = {
get(target, prop, receiver) {
if (prop === 'secret') {
return Reflect.get(...arguments) + ' exposed';
}
return Reflect.get(...arguments);
}
};

const secretObj = { secret: 'hidden', reveal: 'nothing' };
const proxy = new Proxy(secretObj, handler);

console.log(proxy.secret);


Ответ: hidden exposed

JavaScript test | #JavaScript
❗️Что будет на выходе:
const templateFn = (strings, ...values) => {
return strings.reduce((result, str, i) => {
const value = values[i] !== undefined ?
(typeof values[i] === 'number' ? values[i] * 2 : values[i]) : '';
return result + str + value;
}, '');
};

const num = 5;
const str = 'world';

const result = templateFn`Hello ${str}, ${num} times ${'!'}`;
console.log(result);


Ответ: Hello world, 10 times !

JavaScript test | #JavaScript
❗️Что будет на выходе:
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
❗️Что будет на выходе:
let arr = [1];

arr.length = 4;
arr[3] = 2;

for (let i in arr) {
console.log(i);
}


Ответ: 0, 3

JavaScript test | #JavaScript