Не могли бы вы ответить на эти вопросы?

У меня есть несколько вопросов по JS, чтобы вы могли расширить свой кругозор по Javascript или, возможно, просто освежить в памяти то, что вы уже знаете. Возьмите ручку и лист бумаги. Хорошо, электронная форма подойдет. Прежде чем читать ответы, попробуйте записать их. Зачем беспокоиться?

Как сказал израильско-американский психолог Даниэль Канеман:

«Общий «закон наименьшего усилия» применим как к когнитивным, так и к физическим
нагрузкам. Закон утверждает, что если есть несколько способов достижения
одной и той же цели, люди в конечном итоге будут тяготеть к наименее требовательному курсу действий
. В экономике действий усилия — это затраты, а приобретение навыков определяется балансом выгод и затрат. Лень глубоко заложена в нашей природе
.

Вы можете перейти прямо к ответам, так как это проще, но представьте, что вы на собеседовании или готовитесь к нему. Иногда мы также используем некоторые функции JS, но можем ли мы действительно объяснить, почему и как они работают? Ну, не знаю :-) Давайте ответим всего на 4 вопроса этой первой викторины по JS.

Вопросы:

  1. В чем разница между == и === ?
  2. Что такое анонимная функция? Плюсы и минусы? Что такое ИИФЭ?
  3. Каковы способы создания объекта JS?
  4. Как бы вы описали 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(), когда думал об объектах и ​​о том, как их создавать. И я узнал кое-что новое о крайних случаях сравнения принуждения.