Оценка теста JavaScript, часть 2

Вот еще несколько вопросов / тем, с которыми я столкнулся во время своего путешествия по стране оценивания JavaScript LinkedIn.

Разговор о моем генераторе

Изучая JavaScript, я видел очень много функций, а также много ужасных функций (большинство из них я написал!). Но как только я думаю, что наконец овладел священным искусством функции JavaScript, JavaScript дает мне пощечину чем-то новым и более сложным. Мой последний подобный опыт возник в связи с вопросом в оценке LinkedIn: «Как называется функция, выполнение которой может быть приостановлено и возобновлено позже?»

Что, JavaScript?

Все функции, которые я видел или использовал до этого момента, просто проходили через свой код. Перефразируя карточку «Go to Jail» из «Монополии», они пошли прямо от начала до конца, не пройдя Go и не собрав 200 долларов. Однако оказывается, что в JavaScript есть функция, которая может пройти Go, сделать перерыв, собрать 200 долларов и, наконец, попасть в тюрьму.

Вот возможные ответы на вопрос:

  • Функция стрелки
  • Функция обещания
  • Функция генератора
  • Функция Async / Await

Хорошо, поднимите руку, если вы никогда не использовали функцию генератора. (Да, я поднимаю руку.) Поэтому я не претендую на то, чтобы полностью понять, как это работает. Давайте посмотрим на очень простой пример:

function* myGenerator(x) {
  yield x;
  yield x * x;
}
let g = myGenerator(5)

console.log(g.next().value)

А если мы снова запустим console.log (g.next (). Value) ? На этот раз мы получим 25. Можем ли мы запустить эту строку в третий раз? Мы можем, но мы просто получим «undefined».

Первое, что вы заметите в синтаксисе функции генератора, - это * после ключевого слова function . В нашем примере также используется ключевое слово yield , потому что «[t] оператор yield приостанавливает выполнение генератора и возвращает значение». Еще один ключевой аспект, о котором следует помнить, - это использование next () , которое, согласно Mozilla Developer Network , «возвращает объект со свойством value, содержащим полученное значение, и свойство done, которое указывает, выдал ли генератор свое последнее значение, поскольку логическое ".

Чтобы продемонстрировать, если бы мы запустили console.log (g.next ()) , мы получили бы этот объект: {value: 5, done: false} . Запуск console.log (g.next ()) во второй раз вернулся бы {значение: 25, сделано: ложь} . В третий раз вернулось бы {value: undefined, done: true} .

Функции генератора повторяются и отлично подходят для асинхронного программирования. Щелкните ссылки в приведенных выше абзацах, чтобы узнать о них больше.

Изменить свой заказ?

Теперь кое-что попроще. Один вопрос по оценке представляет собой следующий код:

const dessert = { type: ‘pie’ };
dessert.type = ‘pudding’;

В чем будет ценность desert.type ? Останется ли он «пирогом»? Перейти на «пудинг»? Выкинуть ошибку? Или вернуть как undefined? Вопрос, вероятно, предназначен для проверки вашего понимания ключевого слова const . Если бы десерт был объявлен с использованием более старого ключевого слова var , вы, вероятно, сразу узнали бы, что вторая строка кода изменяет значение desert.type на pudding. Но здесь мы используем const , и, как сообщает нам w3schools.com, «[v] ariables, определенные с помощью const, нельзя переназначить».

Однако в этом случае мы имеем дело с объектом, а не с примитивным типом данных. Это имеет значение? Это действительно так. Даже если объект определен с помощью const , его свойства можно изменить. Таким образом, десерт.тип теперь называется пудингом. (И если бы это было на мое усмотрение, я бы назвал это шоколадным пудингом с небольшим количеством Cool Whip сверху.)

Унарный или не унарный? Вот в чем вопрос.

«Какой вариант не является унарным оператором?»

Я бы не узнал ответа на этот вопрос, не посоветовавшись с моим дорогим другом Google. Фактически, я даже не припомню, чтобы встречал термин унарный оператор , хотя оказалось, что я использовал несколько из них раньше. Согласно Mozilla Developer Network , «унарная операция - это операция только с одним операндом». Среди них логическое НЕ (!), Оператор декремента (- -), оператор приращения (++) и ключевое слово typeof .

Четыре возможных ответа на этот вопрос об оценке следующие:

  • экземпляр
  • пустота
  • тип
  • Удалить

Еще не все!

Suggested posts

Мои наиболее используемые ресурсы кодирования

Мои наиболее используемые ресурсы кодирования

На этой неделе я получил электронное письмо от участника ежедневного списка рассылки. Они хотели знать: какие ресурсы вы посещаете ежедневно, еженедельно и ежемесячно? Отличный вопрос! Я рад поделиться некоторыми мыслями о моем рабочем процессе и основных ресурсах, которые я использую.

Серия Lit library - 1: Глубокое погружение в библиотеку lit-html

Серия Lit library - 1: Глубокое погружение в библиотеку lit-html

Цель этой серии блогов — углубиться в библиотеку Lit и получить всестороннее представление о ее уникальных функциях и о том, чем она отличается от других библиотек и фреймворков на рынке. Серия разделена на три части, охватывающие такие темы, как 1.

Related posts

Что вы можете сделать в свой сезон ожидания (в ожидании вашей первой работы в сфере технологий)

Что вы можете сделать в свой сезон ожидания (в ожидании вашей первой работы в сфере технологий)

Переход к новой карьере может быть чрезвычайно сложным, если вы пытаетесь сделать это в одиночку. Важно найти партнеров по подотчетности, которые находятся на том же уровне обучения, что и вы, у которых схожие цели, упорство и стремление.

Что делает подкаст влиятельным?

Что делает подкаст влиятельным?

На прошлой неделе я заметил пресс-релиз, разосланный через PressGazette (новостной веб-сайт британских СМИ). В статье сообщалось, что Acast, скандинавская компания по размещению и рекламе подкастов, возглавит консорциум «вероятно, самых влиятельных» издателей подкастинга.

Обучение на рабочей неделе важнее, чем вы думаете

Обучение на рабочей неделе важнее, чем вы думаете

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

БЕЗГРАНИЧНАЯ ЖИЗНЬ

Когда вы вырастаете, вам, как правило, говорят, что мир такой, какой он есть, и ваша жизнь состоит в том, чтобы просто жить своей жизнью внутри мира, никогда не рискуя своей жизнью, просто следовать установленному пути и умереть в конце, и стараться не слишком сильно бить стены. Но это очень ограниченная жизнь.