Следующие вопросы предназначены для сложных и поучительный Отказ Если вы точно знаете, как ответить на каждого, это здорово, но если вы ошиблись и учитесь Почему Вы ошиблись, я борюсь, что еще лучше!
Дайте мне знать в комментариях, если вы узнаете что-нибудь из викторины!
Если вам нравится этот тест, пожалуйста, дайте ему 💓, 🦄 или 🔖 и рассмотрим:
- подписаться на мой бесплатный еженедельный рассылщик
- подписки на мой бесплатный канал dev youtube
Проиллюстрирует ли следующий фрагмент с немедленным выражением функции (IIFE), функция более высокого порядка (HOF), оба, либо ни одна?
((fn, val) => {
return fn(val);
})(console.log, 5);
Ответ и объяснение
Ответ: Как IIFE, так и HOF
Фрагмент ясно иллюстрирует iife, как мы сразу же вызываем функцию, проходя мимо console.log и 5 к этому. Кроме того, мы обнаруживаем, что это HOF как FN Это функция, и HOF определяется как любая функция, которая принимает другую функцию в качестве параметра или возвращает функцию.
Оба А и B являются объектами с одинаковыми свойствами и значениями. Который создается более эффективно?
const arr = [1, 2, 3];
const a = arr.reduce(
(acc, el, i) => ({ ...acc, [el]: i }),
{}
);
const b = {};
for (let i = 0; i < arr.length; i++) {
b[arr[i]] = i;
}
Ответ и объяснение
Ответ: преступность
Когда B устанавливается, B [ARR [I]] Свойство установлено в текущий индекс на каждой итерации. Когда A устанавливается, синтаксис распространения ( ... ) создаст неглубокую копию объекта аккумулятора ( ACC ) на каждой итерации и дополнительно установить новое свойство. Эта неглубокая копия дороже, чем не заметная копия; А требует строительства 2 промежуточных объектов до достижения результата, тогда как B не строит промежуточные объекты. Поэтому B устанавливается более эффективно.
Рассмотрим следующее Супергеромакер функция. Что зарегистрировано, когда мы проходим следующие два входа?
const superheroMaker = a => {
return a instanceof Function ? a() : a;
};
console.log(superheroMaker(() => 'Batman'));
console.log(superheroMaker('Superman'));
Ответ и объяснение
Ответ: “Бэтмен” “Супермен”
При прохождении () => «Бэтмен» к супергеромакер , А является примером Функция Отказ Поэтому функция вызывается, возвращая строку "Бэтмен" Отказ При прохождении "Супермен" супергеромеру, А не является экземпляром Функция И, следовательно, строка "Супермен" только что вернулся. Следовательно, вывод оба "Бэтмен" и "Супермен" Отказ
Если вам нравится этот тест, пожалуйста, дайте ему 💓, 🦄 или 🔖 и рассмотрим:
- подписаться на мой бесплатный еженедельный рассылщик
- подписки на мой бесплатный канал dev youtube
Рассмотрим следующий объект.
const obj = {
1: 1,
2: 2,
3: 3
};
Это Объект. Keys равно Object.values ?
console.log(Object.keys(obj) == Object.values(obj));
Ответ и объяснение
Ответ: ложный
В этом случае Объект. Keys Преобразует клавиши, чтобы быть строкой ["1", "2", "3"] и Object.values дает [1, 2, 3] . Даже если значения оказываются одинаковым типом, две массивы являются разными объектами в памяти, поэтому сравнение равенства вернет ложь Отказ Вы увидите много вопросов викторины здесь, бурением в концепции объекта и сравнения массива!
Рассмотрим следующую рекурсивную функцию. Если мы пройдем строку "Hello World" к нему, что заново в систему?
const myFunc = str => {
if (str.length > 1) {
return myFunc(str.slice(1));
}
return str;
};
console.log(myFunc('Hello world'));
Ответ и объяснение
Ответ: "D"
Первый раз мы называем функцию, str.length превышает 1 ( Hello World » – это 11 символов), поэтому мы возвращаем ту же функцию, вызванную str.slice (1) какая строка «Мир Элло» Отказ Мы повторяем этот процесс до тех пор, пока строка не будет только одним символом длиной: символ "D" , который возвращается на первоначальный вызов MyFunc Отказ Затем мы регистрируем этот персонаж.
Что зарегистрировано, когда мы проверяем следующие сценарии равенства?
const a = c => c; const b = c => c; console.log(a == b); console.log(a(7) === b(7));
Ответ и объяснение
Ответ: ложный истинный
В первом тесте А и B разные объекты в памяти; Неважно, что параметры и значения возврата в каждой определении функции идентичны. Поэтому А не равно B Отказ Во втором тесте A (7) Возвращает номер 7 и B (7) Возвращает номер 7 Отказ Эти примитивные типы строго равны друг другу.
В этом случае равенство ( == ) VS идентичности ( === ) операторы сравнения не имеют значения; Ни один тип принуждения не повлияет на результат.
А и B разные объекты с тем же Имя имущество. Эти свойства строго равны друг другу?
const a = {
firstName: 'Bill'
};
const b = {
firstName: 'Bill'
};
console.log(a.firstName === b.firstName);
Ответ и объяснение
Ответ: истинный
Ответ да, они. A.FirstName это строковое значение «Билл» и b.firstname. это строковое значение «Билл» Отказ Две одинаковые строки всегда равны.
Допустим, MyFunc это функция, val1 это переменная, а val2 это переменная. Допускается ли следующий синтаксис в JavaScript?
myFunc(val1)(val2);
Ответ и объяснение
Отвечать: да
Это общий шаблон для функции более высокого порядка. Если myfunc (val1) Возвращает функцию, то эта функция будет вызываться с val2 как аргумент. Вот пример этого в действии, который вы можете попробовать:
const timesTable = num1 => {
return num2 => {
return num1 * num2;
};
};
console.log(timesTable(4)(5));
// 20
Рассмотреть объекты А и B ниже. Что записано?
const a = { firstName: 'Joe' };
const b = a;
b.firstName = 'Pete';
console.log(a);
Ответ и объяснение
Ответ: {Именное имя: «Пит»}
Когда мы устанавливаем B Во второй строке B и А указывают на тот же объект в памяти. Изменение Имя Недвижимость на B поэтому изменит Имя недвижимость на единственном объекте в памяти, так A.FirstName будет отражать это изменение.
Будет ли следующая функция всегда вернуть наибольшее количество в массиве?
function greatestNumberInArray(arr) {
let greatest = 0;
for (let i = 0; i < arr.length; i++) {
if (greatest < arr[i]) {
greatest = arr[i];
}
}
return greatest;
}
Ответ и объяснение
Ответ: нет
Эта функция будет работать нормально для массивов, где, по меньшей мере, одно значение 0 или больше ; Тем не менее, он потерпит неудачу, если все номера ниже 0 Отказ Это потому, что самая большая переменная начинается в 0 Даже если 0 больше, чем все элементы массива.
Если вам нравится этот тест, пожалуйста, дайте ему 💓, 🦄 или 🔖 и рассмотрим:
- подписаться на мой бесплатный еженедельный рассылщик
- подписки на мой бесплатный канал dev youtube
Хотите больше вопросов теста? Перейти к https://quiz.typeofnan.dev для 72 Вопросы викторины JavaScript!
Оригинал: “https://dev.to/nas5w/10-challenging-javascript-quiz-questions-and-answers-2a2b”