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

Ссылка: @Portal_v_IT

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

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

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

function multiply(a, b) {
if (b === 0) {
return 0;
} else if (b > 0) {
return a + multiply(a, b - 1);
} else {
return -multiply(a, -b);
}
}

console.log(multiply(7, 5));


Ответ: 35

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

function* generator() {
yield 1;
yield 2;
}

const gen = generator();
const sym = Symbol('unique');

gen[sym] = function() {
return this.next().value;
};

console.log(gen[sym](), gen[sym](), gen[sym]());


Ответ: 1, 2, undefined

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

function fetchData(url) {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (url.startsWith('https://api.example.com')) {
resolve({ data: 'Some data' });
} else {
reject(new Error('Invalid URL'));
}
}, 1000);
});
}

fetchData('https://api.example.com/data')
.then(response => console.log(response.data))
.catch(error => console.error(error));


Ответ: 'Some data'

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const string = "abacabadabacaba";
const result = string.split("").reduce((acc, val) => {
acc[val] = (acc[val] || 0) + 1;
return acc;
}, {});
console.log(result);


Ответ: { a: 8, b: 4, c: 2, d: 1 }

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('Resolved');
reject(new Error('Rejected'));
}, 1000);
});

promise.then(response => console.log(response)).catch(error => console.error(error));


Ответ: 'Resolved'

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const func = new Function('a', 'b', 'return a + b');
console.log(func(1, 2));


Ответ: 3

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

async function asyncQuiz() {
console.log("Start");

const promise1 = new Promise((resolve) => {
setTimeout(() => resolve("Promise 1"), 1000);
});

const promise2 = new Promise((resolve) => {
setTimeout(() => resolve("Promise 2"), 500);
});

console.log(await promise1);
console.log(await promise2);

console.log("End");
}

asyncQuiz();


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

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const string = "Hello, World! How are you?";

const result = string.match(/[aeiou]/g).reduce((acc, char) => {
acc[char] = (acc[char] || 0) + 1;
return acc;
}, {});

console.log(result);


Ответ: { a: 1, e: 2, o: 4, u: 1 }

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

function deepFreeze(obj) {
Object.freeze(obj);
Object.getOwnPropertyNames(obj).forEach(prop => {
if (typeof obj[prop] === 'object' && !Object.isFrozen(obj[prop])) {
deepFreeze(obj[prop]);
}
});
return obj;
}

const data = { a: { b: { c: 1 } } };
const frozenData = deepFreeze(data);

frozenData.a.b.c = 2;

console.log(frozenData.a.b.c);


Ответ: 1

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

function* generator() {
yield 1;
yield* [2, 3];
yield 4;
}

const gen = generator();

const arr = Array.from(gen);
console.log(arr);



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

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

function* fibonacci() {
let [prev, curr] = [0, 1];
while (true) {
[prev, curr] = [curr, prev + curr];
yield curr;
}
}

const fib = fibonacci();

console.log(fib.next().value);
console.log(fib.next().value);
console.log(fib.next().value);


Ответ: 1, 2, 3

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const asyncFunction = async () => {
const delay = (ms) => new Promise(resolve => setTimeout(resolve, ms));

const result = await Promise.race([delay(100), delay(500)]);
return result;
};

asyncFunction().then(value => console.log(value));


Ответ: undefined

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

var a = 1
function output () {
console.log(a)
var a = 2
console.log(a)
}
console.log(a)
output()
console.log(a)


Ответ: 2, 1

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const sym1 = Symbol('sym');
const sym2 = Symbol('sym');

const obj = {
[sym1]: 'value1',
[sym2]: 'value2'
};

console.log(obj[sym1], obj[sym2], sym1 === sym2);


Ответ: value 1, value 2, false

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const numbers = [2, 4, 6, 8, 10];

const result = numbers.reduce((acc, val) => {
acc[val] = val * 2;
return acc;
}, {});

console.log(result);


Ответ: { 2: 4, 4: 8, 6: 12, 8: 16, 10: 20 }

JavaScript test | ChatGPT | #JavaScript
Работа с асинхронными запросами (AJAX)

Этот код выполняет асинхронный GET-запрос к серверу и обрабатывает ответ в формате JSON.

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

for (var i = 0; i < 3; i++) {
const log = () => {
console.log(i)
}
setTimeout(log, 100)
}


Ответ: 3, 3, 3

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

function* generator() {
yield 1;
yield 2;
yield 3;
}

const gen = generator();

const { value, done } = gen.return('early');

console.log(value, done);


Ответ: 'early', true

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const string = "Lorem ipsum dolor sit amet";

const result = string.split(" ")
.map(word => word.toLowerCase())
.reduce((acc, word) => {
acc[word] = (acc[word] || 0) + 1;
return acc;
}, {});

console.log(result);


Ответ: { amet: 1, dolor: 1, ipsum: 1, lorem: 1, sit: 1 }

JavaScript test | ChatGPT | #JavaScript
Рекурсия и оптимизация рекурсивных функций

В первой части кода есть простая рекурсивная функция factorial, которая вычисляет факториал числа n. Она вызывает себя с аргументом n - 1, пока n не станет меньше или равно 1.

Во второй части кода представлена оптимизированная версия функции factorialMemoized, которая использует мемоизацию. Мемоизация - это техника, при которой результаты предыдущих вызовов функции сохраняются в памяти и возвращаются в случае повторного вызова с теми же аргументами. В данном случае, мы используем объект memo для хранения результатов предыдущих вызовов factorialMemoized. Если результат уже вычислен для конкретного n, мы возвращаем его из memo, иначе вычисляем и сохраняем в memo.

Таким образом, оптимизированная версия factorialMemoized более эффективна при вычислении факториала для больших чисел, так как избегает переполнения стека вызовов, и вычисляет результаты только один раз для каждого n.

JavaScript test | ChatGPT | #JavaScript
🧠Что будет на выходе?

const emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
const emails = ["user@example.com", "john.doe@gmail.", "invalid-email", "info@company.org"];

const validEmails = emails.filter(email => emailPattern.test(email));

console.log(validEmails);


Ответ: ["user@example.com", "info.company.org"]

JavaScript test | ChatGPT | #JavaScript