Я делал заметки о некоторых советах, которыми делились специалисты по управлению талантами и старшие разработчики, и подумал, что начну писать о них!

Посещение Meetups и расширение моего кругозора в техническом сообществе помогло мне оставаться в тонусе и узнавать об опыте других людей в качестве младших разработчиков. Большой темой для обсуждения является «О чем меня будут спрашивать на моем техническом тесте?». Я слышал несколько важных советов и решил поделиться со всеми вами!

Советы по прохождению технического теста JS: что следует пересмотреть

Знай примитивы

Javascript имеет шесть типов данных, называемых примитивами. Примитив не является объектом (кроме null) и не имеет собственных методов. Все примитивы неизменяемы.

  • Boolean — true или false
  • Undefined — объявленная переменная, которой не присвоено значение.
  • Число — целые числа, числа с плавающей запятой и т. д.
  • Строка — массив символов в кавычках.
  • Символ — уникальное значение.
  • Null — нет значения. Но это, как ни странно, считается объектом! Следите за этим в вопросах интервью.

Все остальное является объектом

Объект представляет собой набор ключей и значений.

Например:
Массивы
 – это объекты типа списка. Его прототип имеет методы, которые позволяют нам перебирать и видоизменять их, такие как .map(), .concat(), sort().

Объявления переменных

var:обрабатывается перед выполнением любого кода (так называемое поднятие), поэтому общепринятой практикой является объявление этих переменных в верхней части области действия, поскольку они ведут себя так, как если бы они все равно объявлен первым! Становится свойством объекта окна.

let: доступен только в рамках блока, в котором он был определен. Если он определен в консоли, как в моем примере, он становится свойством объекта окна.

const: создает переменную, доступную для глобальной или локальной области видимости, в зависимости от блока, в котором она объявлена. Глобальные константы не становятся свойствами объекта окна. Он создает ссылку только для чтения на переменную, имя переменной нельзя изменить, но если это объект; содержимое на самом деле может!

Объявления функций против выражений

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

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

Функциональные выражения в JavaScript не поднимаются, как объявления функций. Вы не можете использовать функциональные выражения до их определения.

Операторы равенства

==Оператор равенства: преобразует сравниваемые элементы в один и тот же тип, а затем выполняет сравнение, чтобы увидеть, совпадают ли значения.

!=Оператор неравенства

===Оператор идентификации:выполняет сравнение без изменения типа данных.
!==Операция неидентификации.

Глубокие/мелкие копии

Глубокое копирование
При копировании примитивных типов данных (например, целых чисел) вы сохраняете значения копируемой переменной в новую переменную и сохраняете ее в новом фрагменте памяти. Это сделает правильную «новую» копию.

const age = 10
let newAge = age (i'm making a deep copy)

// newAge 10
newAge = 11

//newAge 11
//age 10 (the orginal value has stayed the same)

Поверхностное копирование
При копировании объектов (например, массива!) поведение отличается от поведения примитивов. Когда вы присваиваете новой переменной значение существующей, значения сохраняются только один раз при создании, а присвоение новой переменной просто создает указатель (ссылку) на это исходное значение.
Некоторые значения по-прежнему связаны с исходной переменной, поскольку ссылка на память остается прежней. Я постараюсь показать базовую версию того, как хранится память! Думайте о нашем «м» как о блоке памяти.

* The original array, and how it's being stored...
const ages = [23, 10, 5, 2, 14]     m1 >> [m2, m3, m4, m5, m6]

* Make a copy of the original array: 'newAges' refers to 'ages'!
newAges = ages                      m7 >> m1 >> [m2, m3, m4, m5, m6]
//(5) [23, 10, 5, 2, 14]

Let's change a value inside the copy...
newAges[1] = 150                    m8

Now let's look at the origianl array! It's the same as the copy!
ages
//(5) [23, 150, 5, 2, 14]           m1 >>[m2, m8, m4, m5, m6]
newAges
//(5) [23, 150, 5, 2, 14]           m7 >> m1 >> [m2, m8, m4, m5, m6]

Оператор спреда

Вы можете создать новую копию объекта, которая оставляет оригинал нетронутым, используя оператор распространения {…}, названный так потому, что он «распространяет» все значения исходного объекта на совершенно новый!

Остерегайтесь вложенных объектов!
Они ведут себя по-разному. Если вы распространяете исходный объект «pets» в новый объект «myPets», вы создаете ссылочный указатель на «pets» — (поверхностное копирование).

Если вы хотите создать глубокую копию, вам нужно создать новый объект «myPets» и создать ключ, прежде чем распространять в него значения.

Если у вас есть глубоко вложенный объект и вы не хотите вручную распределять значения снова и снова, вы можете использовать JSON.parse() и JSON.stringify!

Это изменяет объект на и строку, а затем преобразует его обратно в объекты Javascript!

Object.assign

Это использовалось больше до того, как оператор распространения стал частью словаря JS и делает то же самое. Вы передаете новый объект в качестве первого аргумента, так как это аргумент, который изменяется, а затем возвращается. Затем вы передаете объект, который хотите скопировать.

Фу! Я пока оставлю это там и добавлю больше в эту серию, когда услышу больше! Удачи всем, кто сдает технический тест или идет на свою первую работу в качестве инженера-программиста. Ты можешь это сделать!

Пожалуйста, хлопайте в ладоши, если вы нашли это полезным, и добавьте любые комментарии ниже — есть ли у вас какие-либо другие важные советы? Заметили ошибку, которую я сделал? Позвольте мне знать ваши мысли :)