В преддверии старта курса "React.js Developer" приглашаем будущих студентов и всех желающих посмотреть открытый вебинар на тему "Пишем приложение на React+Redux".
А сейчас предлагаем пройти квиз на знание JavaScript.
Насколько хорошо вы знаете JavaScript? Стремитесь ли к профессиональному росту?
Я составил викторину из 10 вопросов по JavaScript. Посмотрим, сможете ли вы ответить на них, не используя консоль браузера. Надеюсь, вы узнаете что-то новенькое. Ответы даны в конце статьи.
1. Что этот код выведет на консоль?
var bar = null;
console.log(typeof bar === "object");
a) false
b) true
c) null
d) будет выдана ошибка
2. Что этот код выведет на консоль?
(function(){
var a = b = 3;
})();
console.log("a defined? " + (typeof a !== 'undefined'));
console.log("b defined? " + (typeof b !== 'undefined'));
a) true, false
b) false, true
c) true, true
d) false, false
3. В React все является ____ .
a) модулем
b) компонентом
c) пакетом
d) классом
4. От чего отказались в последних версиях React?
a) componentWillMount
b) JavaScript
c) componentDidMount
d) от приглашений на Facebook
5. Что такое Babel?
a) транспайлер
b) компилятор
c) интерпретатор
d) компилятор и транспайлер
6. Что такое виртуальная DOM?
a) точная HTML-копия реальной DOM
b) встроенный компонент браузера
c) объект JavaScript, содержащий элементы и данные
d) строка JSON, содержащая элементы и данные, возвращаемые из метода react.render
7. Какое их следующих утверждений не относится к рендерингу виртуальной DOM?
a) Реализация виртуальной DOM всегда оказывается быстрее, чем манипуляции с DOM.
b) Если что-то меняется, выполняется повторный рендер всего пользовательского интерфейса в виртуальной DOM.
c) Перерисовка DOM — самая медленная часть рендера.
d) После повторного рендера в реальную DOM вносятся только необходимые изменения.
8. Верно или неверно утверждение ниже?
useLayoutEffect
запускается после рендера React-компонента и гарантирует, что обратный вызов эффекта не заблокирует отрисовку.
9. Какое из перечисленных ниже слов не является зарезервированным словом в JavaScript?
a) default
b) throw
c) finally
d) undefined
10. Что вернут эти функции?
function foo1() {
return {
bar: 'hello'
};
}
function foo2() {
return
{
bar: 'hello'
};
}
a) undefined
, { bar: “hello” }
b) { bar: “hello” }
, undefined
c) undefined
, undefined
d) { bar: “hello” }
, { bar: “hello” }
Ответы
Вопрос 1
b) Многие часто забывают, что null
является объектом. Поэтому при проверке типа аргумента с помощью оператора typeof
нужно также проверять, что переменной не присвоено значение null
.
Вопрос 2
b) Здесь переменная b
объявляется в глобальной области, но переменная a
— внутри функции. Поэтому b = 3; a = undefined
. Чтобы этого избежать, используйте строгий режим (use strict
).
Вопрос 3
b) В React все является компонентом — это основные конструктивные блоки веба.
Вопрос 4
a) Да, это уже анонсировали. Нам придется перестать использовать этот метод.
Вопрос 5
d) Это спорно, но на сайте Babel написано, что это компилятор. Вопрос в том, является ли транспайлер компилятором.
Вопрос 6
c) Виртуальная DOM — это просто объект JavaScript, содержащий все данные, которые нам нужно сравнивать с данными реальной DOM.
Вопрос 7
a) Ее вполне можно сделать медленнее. Старайтесь не использовать глубоко вложенные объекты, а при необходимости используйте функцию мемоизации.
Вопрос 8
Неверно. Это делает хук useEffect
.
Вопрос 9
d) undefined
не является зарезервированным словом, его можно переназначить.
Вопрос 10
b) После оператора return
необходимо указывать возвращаемое значение в той же строке, иначе автоматически подразумевается точка с запятой.
Надеюсь, вам понравились вопросы. Если вы чего-то не знали — здорово! Это значит, что вы почерпнули что-то новое.
Готовы ко второй части викторины? Переходите!
Узнать подробнее о курсе "React.js Developer".
Посмотреть открытый урок "Пишем приложение на React+Redux".
fathergorry
Только когда я честно признался себе, что JS — это язык, состоящий из факапов, я стал продуктивно его осваивать. Я представляю себе, будто это такая игра-аркада с ловушками, и если ее пройти до конца, то получится работающий код.
Например, сегодня я узнал, что нельзя просто так создать пригодный к использованию массив из поля ввода.
AlexeyCaTHaR
В смысле? Если вы смотрели, что возвращает val(), то не возникает вопросов, как из строки получить массив. Или возникают?
Или надо создать массив заданной длины?
fathergorry
Массив заданной длины, да.
Строку можно просто разбить split'ом.
Ilusha
Честно говоря, после прочтения вашего коммента, я перепроверил: а он точно 2020 года?
fathergorry
А что нынче в моде?
PerlPower
Нынче в моде отрицать существование jQuery и огромное количество сайтов которые его используют. Если его не замечать, может оно исчезнет.
fathergorry
Какая прелесть. А почему стандарт де-факто пытаются игнорировать, как считаете?
VolCh
Стандарт де-факто он на "олдскульных" сайтах с рендерингом html на стороне сервера, а не в современных SPA приложениях, пускай и с серверным рендерингом )
Ну и, имхо, бОльшую часть своей популярности он получил за решение некоторых проблем кроссбраузерности и коллбэк-ада, которые уже решены или нативно, или решаются бабелем.