Не могли бы вы ответить на эти вопросы?
У меня есть несколько вопросов по JS, чтобы вы могли расширить свой кругозор по Javascript или, возможно, просто освежить в памяти то, что вы уже знаете. Возьмите ручку и лист бумаги. Хорошо, электронная форма подойдет. Прежде чем читать ответы, попробуйте записать их. Зачем беспокоиться?
Как сказал израильско-американский психолог Даниэль Канеман:
«Общий «закон наименьшего усилия» применим как к когнитивным, так и к физическим
нагрузкам. Закон утверждает, что если есть несколько способов достижения
одной и той же цели, люди в конечном итоге будут тяготеть к наименее требовательному курсу действий
. В экономике действий усилия — это затраты, а приобретение навыков определяется балансом выгод и затрат. Лень глубоко заложена в нашей природе.
Вы можете перейти прямо к ответам, так как это проще, но представьте, что вы на собеседовании или готовитесь к нему. Иногда мы также используем некоторые функции JS, но можем ли мы действительно объяснить, почему и как они работают? Ну, не знаю :-) Давайте ответим всего на 4 вопроса этой первой викторины по JS.
Вопросы:
- В чем разница между == и === ?
- Что такое анонимная функция? Плюсы и минусы? Что такое ИИФЭ?
- Каковы способы создания объекта JS?
- Как бы вы описали React?
Привет! Вы прыгаете прямо здесь, не пытаясь записать это?
Ладно, я тебя не виню :-)
Ответы:
1. В чем разница между == и === ?
Одним словом — приведение.
Приведение в JS означает преобразование значения одного типа в другой. Например, строка в число. Если мы используем ==
, преобразование типов происходит до сравнения, и сравнение строки «2» с числом 2 будет равно true.
"2" == 2
> true
Напротив, приведение не допускается, когда используется тройное равенство ===. Это более строго, поэтому предыдущий пример будет выглядеть так:
"2" === 2
> false
В целом ===
считается предпочтительным вариантом, но есть и другие крайние случаи, которые стоит рассмотреть. Вы можете подробнее прочитать о них здесь.
2. Что такое анонимная функция? Плюсы и минусы? Что такое ИИФЭ?
Анонимная функция — это функциональное выражение, не имеющее имени:
function() {…}
Это быстрее и проще написать, так как в нем отсутствует имя, но недостатки преобладают:
- сложно отлаживать — нет имени для отображения в трассировке стека
- анонимная функция не говорит нам о своей функциональности ничего, что могло бы быть полезно из названия (удобочитаемость/обслуживание)
В общем, лучше всего называть функцию.
Я описал IIFE в этой статье о выявлении паттерна модуля.
3. Какие есть способы создания JS-объекта?
Наиболее распространенным способом является литеральный синтаксис (или инициализатор объекта).
let car = { year: 2015}
Мы также можем создать функцию-конструктор и инициализировать объект с помощью оператора new.
function Person(name, age, sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
var user = new Person("Peter", 24, "male");
С помощью метода Object.create() (он создает новый объект, используя существующий объект в качестве прототипа вновь созданного объекта).
Пример взят из документации MDN:
const person = { isHuman: false, printIntroduction: function() { alert(`My name is ${this.name}. Am I human ${this.isHuman}`); } };
const me = Object.create(person);
me.name = 'Miro'; // property set on "me", but not on "person" me.isHuman = true; // inherited properties can be overwritten
me.printIntroduction(); // expected output: "My name is Miro. Am I human? true"
4. Как бы вы описали React?
Я оставлю это для вас. Дайте мне знать в комментариях, что вы думаете об этом.
Заворачивать
Вы узнали что-то новое? Или это было хорошее освежение? Признаюсь, я забыл о методе Object.create(), когда думал об объектах и о том, как их создавать. И я узнал кое-что новое о крайних случаях сравнения принуждения.