Возвращение к работе с JS в эти выходные было немного неприятным. Я коснулся JS достаточно, чтобы пройти курс подготовки к буткемпу, но я думаю, что мой мозг сразу отверг все, что я узнал, когда начинал часть курса Ruby. Простота написания Ruby заставила меня забыть о специфике JavaScript.

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

фигурные скобки и точки с запятой;

При написании функций для первых двух лабораторных работ в нашем введении в JavaScript я постоянно писал def … end. Это ошибка. JavaScript использует замыкания вместо блоков,обозначаемых фигурными скобками. Это очень важно помнить, почти так же, как блок def .. end, замыкания заключают весь ваш код в фигурные скобки. И точки с запятой. Всегда заканчивайте свой код внутри замыканий точкой с запятой. Это важно как привычка, поскольку подтверждает, что вы достигли конца своего блока кода, даже если JavaScript автоматически добавит их за вас.

Назначение переменной и область действия

В Ruby присваивание переменных выполняется настолько просто, насколько это возможно:

var1 = “whatever value" назначает локальную переменную, которая доступна в любой области видимости, в которой она объявлена, и не требует дополнительного синтаксиса. Скажем, вам нужно объявить переменную в области действия вашего метода? Руби может это сделать. Кроме того, переменные, которые не назначены как константы, могут изменить свои значения в любое время. Если вам нужна константа, все, что вам нужно сделать, это написать имя переменной с большой буквы и PRESTO = “you are done!”

с JavaScript

var var1 = “whatever value (don't use me very often)”

let var2 = "some other value whose scope we want to narrow"

const var3 = "some value that is constant"

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

Назначение let var1 рекомендуется вместо var var1 из-за области, в которой оно доступно. Область действия назначенных переменных var распространяется на область действия функции, где назначенная переменная let останется в локальной области замыкания, в которой они определены.

Неявные возвраты остались в прошлом. При написании JS всегда следует помнить о том, что возвращаемые значения должны быть явными. Когда вы строите мет-функцию. Когда вы пишете функцию, по сравнению с Ruby, Javascript не включает неявные возвраты, поэтому важно убедиться, что ваша функция выводит некоторые данные в качестве возвращаемого значения, иначе другие обратные вызовы или использование переменных для переноса информации начнут ломаться. вниз.

Петли

Циклический просмотр элементов коллекции в JavaScript может немного сбить с толку, но в то же время должен показаться знакомым:

for (let i = 0; i < arr.length; i++)

Этот должен чувствовать себя одновременно новым и не новым. Мы понимаем, как это работает, из базовых циклов в Ruby i = 0 while i < arr.length <block> end, так что это должно показаться вам знакомым. Базовые циклы работают по тем же принципам, но обратите внимание на let, сохраняя область действия i привязанной к циклу.

collection.forEach(callback)

Это где перекрытие показывает немного меньше и немного больше. Цикл forEach работает аналогично итератору each в Ruby, в том смысле, что ни один из них не возвращает исходную коллекцию, но, насколько я понимаю, forEach вообще не предназначен для возврата значений.

collection.map(callback)

Это должно показаться наиболее знакомым (помните, что сказал Йоми: «Держите это на карте, и у вас все будет хорошо»). Map в этом случае делает то же самое, что .map делает в Ruby: перебирает каждый элемент в нашей коллекции, выполняет определенное действие, а затем возвращает новую коллекцию с новыми значениями по этим индексам. Это очень полезно, если вам нужна новая коллекция, но вы не хотите изменять значения в исходной коллекции.

.reduce/.filter — это также несколько полезных функций для сортировки коллекций, причем .filter позволяет перебирать коллекцию и удалять элементы, соответствующие условию, а .reduce — функция, аналогичная методу .inject в ruby, повторение набора (чисел, если хотите) и сведение их к одному значению, например к сумме, если это то, что вы ищете.