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

const obj1 = { a: 1 };
const obj2 = Object.create(obj1);
obj2.b = 2;

const result = Object.entries(obj2).map(([key, value]) => key + value);

console.log(result);


Ответ: ['b2']

JavaScript test | ChatGPT | #JavaScript
Функции высшего порядка и их использование

Функции высшего порядка в JavaScript - это функции, которые могут принимать другие функции как аргументы или возвращать их как результат. Они являются мощным инструментом для абстракции и повторного использования кода. Рассмотрим пример функции высшего порядка, которая принимает функцию обратного вызова и применяет ее к каждому элементу массива

В этом примере forEach - это функция высшего порядка, которая принимает массив arr и функцию обратного вызова callback. Она итерирует по элементам массива и вызывает callback для каждого элемента.

Функция printItem представляет собой функцию обратного вызова, которая просто выводит элемент в консоль.

Затем мы создаем массив numbers и используем forEach, чтобы применить функцию printItem к каждому элементу массива. Результатом будет вывод всех элементов массива в консоль.

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

console.log('Start');

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

function foo(n) {
if (n === 0) {
console.log('End');
return;
}
console.log('Function call');
foo(n - 1);
}

setTimeout(() => foo(3), 0);


Ответ: Start, Promise, Function call (3 times), End

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

const array = [1, 2, 3, 4, 5];
const result = array.find(n => n > 3) ? array.every(n => n < 6) : array.some(n => n > 4);

console.log(result);


Ответ: true

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

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

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

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

JavaScript test | ChatGPT | #JavaScript
Сортировка массивов объекта

В этом примере мы создаем массив объектов people, содержащий информацию о людях, и затем используем метод sort() для сортировки массива по возрасту в порядке возрастания, используя функцию sortByAgeAscending в качестве функции сравнения. Вы можете создать аналогичную функцию для сортировки в порядке убывания или для сортировки по другим полям объектов. Сортировка массивов объектов полезна при отображении данных в определенном порядке, например, в таблицах или списках.

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

function* generator() {
yield 'a';
yield* 'bcd';
yield 'e';
}

const gen = generator();
console.log([...gen]);


Ответ: ["a", "b", "c", "d", "e"]

JavaScript test | ChatGPT | #JavaScript
Использование sessionStorage для хранения данных на стороне клиента во время сессии

sessionStorage предоставляет временное хранилище данных, доступное только в течение текущей сессии браузера.

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


let obj = { key: ‘value' };
const weakMap = new WeakMap( );

weakMap.set(obj, 'WeakMap Value');
let objClone = { ...obj };
console. log(weakMap.get(objClone) );


Ответ: undefined

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

const arr = [1, 2, 4];
arr.splice(1, 2);
console.log(arr);


Ответ: [1]

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

const array = [1, 2, [3, 4, [5, 6]]];
const result = array.flat(2).map(n => n * 2);

console.log(result);


Ответ: [2, 4, 6, 8, 10, 12]

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

const value = 0.1 + 0.2;
console.log(value === 0.3);


Ответ: false

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

const array = [1, 2, [3, 4, [5, 6]]];
const result = array.flat(2).map(n => n * 2);

console.log(result);


Ответ: 2, 4, 6, 8, 10, 12

JavaScript test | ChatGPT | #JavaScript
Использование Web Workers для многозадачности в веб-приложениях

Web Workers позволяют выполнять многозадачность в веб-приложениях, разделяя выполнение задач между основным потоком и фоновыми воркерами.

JavaScript test | ChatGPT | #JavaScript
Использование sessionStorage для хранения данных на стороне клиента во время сессии

sessionStorage предоставляет временное хранилище данных, доступное только в течение текущей сессии браузера.

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

function greet() {
console.log('Hello, World!');
}
console.log(typeof greet);
console.log(typeof greet());


Ответ: function, Hello, World!, undefined

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

const array = [1, 2, 3, 4, 5];
const [first, ...rest] = array;

const modified = rest.map((n, i) => i % 2 === 0 ? n * 2 : n);

console.log(first, modified);


Ответ: 1, [4, 3, 8, 5]

JavaScript test | ChatGPT | #JavaScript
Манипуляция с элементами страницы: создание, удаление и изменение HTML-элементов

Манипуляция с элементами страницы - это важная часть разработки веб-приложений, которая позволяет создавать, удалять и изменять HTML-элементы динамически с помощью JavaScript. Это особенно полезно при обновлении содержимого страницы без перезагрузки.

В данном примере мы создаем новый элемент div с текстом "Новый элемент" и классом "my-class". Затем мы добавляем этот элемент в конец body документа с помощью метода appendChild(). Мы также изменяем содержимое элемента с помощью свойства textContent и стилизуем его, устанавливая значение свойства backgroundColor.

Через 3 секунды мы удаляем элемент с помощью метода remove(). Это демонстрирует возможность удаления элементов из документа.

Таким образом, манипуляция с элементами страницы позволяет нам динамически создавать, изменять и удалять HTML-элементы, что открывает широкие возможности для создания интерактивных

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

var a = 1;

function foo() {
if (a) {
var a = 10;
}
console.log(a);
}

foo();


Ответ: undefined

JavaScript test | ChatGPT | #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 | ChatGPT | #JavaScript
Работа с графикой: использование библиотеки Canvas для рисования и визуализации данных

Работа с графикой является важной частью разработки веб-приложений, особенно при рисовании и визуализации данных. Для этого разработчики часто используют библиотеку Canvas, которая предоставляет мощные инструменты для создания интерактивных и красочных графических элементов.

Canvas - это элемент HTML5, который позволяет рисовать графику с помощью JavaScript. Он предоставляет API для создания и управления контекстом рисования, на котором можно рисовать линии, фигуры, текст и многое другое.

В данном примере мы получаем контекст рисования Canvas с помощью метода getContext(). Затем мы используем методы контекста, такие как fillRect() для рисования прямоугольника, stroke() для рисования линии и fillText() для рисования текста.

Мы также можем устанавливать различные свойства контекста, такие как цвет заливки (fillStyle), цвет обводки (strokeStyle), толщина линии (lineWidth).

JavaScript test | ChatGPT | #JavaScript