Сокращения в JS

Сокращения в JS

Часто можно увидеть сокращения в JS. То что на первый взгляд кажется непонятным, потом может оказаться удобным в использовании. Эти методы по отдельности описаны на сайте для разработчиков mozilla

1. Условие если

JavaScript
// Объявление переменной
const eighteen = true

// Обычная запись
if ( eighteen ) {
  console.log('Вы можете пройти')
}

// Сокращение если тело условия одна строка
if ( eighteen ) console.log('Вы можете пройти')

// Логическое И. Если первый оператор истина то выполняется второе.
eighteen && console.log('Вы можете пройти')

2. Условие если, иначе

JavaScript
// Обычная запись
if (name) {
  console.log(name)
} else {
  console.log('Имя отсутствует')
}

// Сокращение если тело условия одна строка
if (name) console.log(name)
else console.log('Имя отсутствует')

// Тернарный оператор 
name ? console.log(name) : console.log('Имя отсутствует')

// Логическое ИЛИ. Если переменная приводится к типу false то 
// происходит проверка второго условия и эта строка выводится.
console.log( name || 'Имя отсутствует')

Тут нужно быть аккуратным, потому что например если значение переменной для проверки равно 0 то оно будет приведено к false и выполнится код второго оператора.

3. Округление в меньшую сторону

JavaScript
// Обычная запись округлит до 3
Math.floor(3.7)

// Возвдение в степень
Math.pow(2, 3)

// Сокращенная запись округления в меньшую сторону
~~(3.7)
// Сокращеннаая запись возведения в степень
2 ** 3

4. Преобразование типов

JavaScript
const str = '21'
const num = 34

// Обычная запись по два варианта
const toNum = Number(str)
const toNum2 = parseFloat(str)

const toStr = String(num) 
const toStr2 = num.toString()

// Сокращенная
const toNumShort = +str
const toStrStort = '' + num

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

JavaScript
// Обычная
const name = 'Mikhail'
const age = 34

// Сокращенная если ключевое слово определения переменной совпадает
// для всех переменных. В примере const может быть let или var
const name = 'Mikhail', age = 34

6. Стрелочные функции

JavaScript
// Обычная функция
function triangleArea (a, h) {
  return a * h / 2
}

// Стрелочная функция
const triangleArea = (a, h) => {
  return a * h / 2
}

// Стрелочная функция сразу возвращает значение
const triangleArea = (a, h) => a * h / 2

7. Callback функция как параметр

JavaScript
const arr = [1, 2, 3]

function multiplyByIndex(el, index) {
  return el * index
}

// Длинная запись
const newArr = arr.map( (el, index) => multiplyByIndex(el, index))

// Сокращенная если параметры совпадают
const newArr = arr.map(multiplyByIndex) 

8. Функция как свойство объекта

JavaScript
// Длинная запись
const obj = {
  name: 'Mikhail',
  sayHello: function() {
    return "Hello from " + this.name
  }
}

// Сокращенная
const objShort = {
  name: 'Mikhail',
  sayHello() {
    return "Hello from " + this.name
  }
}

9. Шаблон строки

JavaScript
const text = "Текст с описанием..."

// Конкатенация строк
const section = "<p>" + text + "</p>"

// Использование шаблонного литерала
const sectionShort = `<p>${text}</p>`

10. Операции с числами

JavaScript
let num = 12

// Длинная запись
num = num * 3
num = num / 3
num = num + 3
num = num - 3

// Если нужно выполнить опаерацию с этой же переменной можно сократить
num *= 3
num /= 3
num += 3
num -= 3

// Прибавить 1 или отнять
num++
num--

11. Деструктуризация массивов и объектов.

JavaScript
const obj = { age: 34, city: "Batumi", country: 'Georgia' } 

// Объявление переменных значения равны свойствам объекта
const age = obj.age
const city = obj.city

// Сокращение если имена совпадают. 
const { age, city } = obj

// Можно указать другое имя например city = userCity
const { age, city: ucsrCity } = obj

// Значение по умолчанию если такого свойства нет
const { age, city = 'New york' } = obj

// Оставшиеся свойства можно добавить в другой массив
const { age, ...otherProps } = obj 
// age = 34; otherProps = {city: "Batumi", country: 'Georgia' }

// Массивы
const arr = [ 10, 22, 7 ]

// Стандартное объявление переменных с указанием индексов массива
const x = arr[0]
const y = arr[1]

// Сокращение когда порядок переменной соответствует индексу массива
const [ x, y ] = arr

// Ненужные можно пропустить добавив запятую
const [ x, , z ] = arr

12. Цикл

JavaScript
const arr = [ 10, 22]

// Цикл for с объявление индекса
for ( let i = 0; i < arr.length; i++) {
  console.log(arr[i])
}

// Цикл for of сокращенная версия, переменная содержит текущий элемент
for ( const el of arr) {
  console.log(el)
}
// Если нужен индекс используется метод массива entries()
for ( const [i, el] of arr.entries()) {
  console.log(i, el)
}

// Метод forEach проходит по всем элементам массива
arr.forEach ( el => console.log(el))
// В функции дальше есть следующие параметры index, arr
arr.forEach ( (el, index, arr) => console.log(el, index, arr))

13. Проверка свойств объекта

JavaScript
const obj

const x = obj.table !== undefined && obj.table.cell !== undefined ? obj.table.cell : 'Значение по умолчанию'

// Оператор ? проверяет есть ли такое свойство у объекта, если нет
// то возвращает значение указанное после ??
const x = obj?.table?.cell ?? 'Значение по умолчанию'

Проверять свойства объекта нужно что бы не было ошибки Cannot read properties of undefined. Например если у object нет свойства table а мы пытаемся получить значение obj.table.cell

14. Расширение массивов или объектов

JavaScript
const arr1 = [ 11, 23 ]
const arr2 = [ 82, 99 ]

// Функция concat() осуществляет слияние 2 массивов и возвращает 3
const arr3 = arr1.concat(arr2)

// Слияние используя деструктуризацию 
const arr3 = [ ...arr1, ...arr2 ]


const obj1 = { country: 'Georgia', city: 'Batumi'}
const obj2 = { sea : 'Black' }

// что бы первый объект не был изменен первым указывается пустой объект
const obj3 = Object.assign({}, obj1, obj2)

// Деструктуризцаия для слияния объектов
const obj3 = { ...obj1, ...obj2 }

14. Создание объектов из переменных

JavaScript
const city = 'Batumi'
const country = 'Georgia'

const obj = {
  city : city,
  country : country,
}

// Короткая запись если имя свойства и переменной совпадает
const obj = {
  city,
  country,
}

15. Поменять местами значения переменных

JavaScript
let currentCity = 'Mersin'
let city = 'Batumi'

// Что бы поменять значения местами классическим способом нужно создать 
// третью временную переменную
let temp = currentCity
currentCity = city
city = temp

// Способ через деструктуризацию массивов
[ currentCity, city ] = [ city, currentCity ]

16. Проверка переменной на несколько условий.

JavaScript
// Проверка нескольких условий через оператор ИЛИ 
if ( role === 'admin' || role === 'superadmin' || role === 'user') {
  console.log('Доступ разрешен')
}

// Другой способ проверки, есть ли значение в массиве
if ( ['admin', 'superadmin', 'user' ].includes(role) ) {
  console.log('Доступ разрешен')
}   

17. Фильтрация массива

JavaScript
// Массив в котором нужно убрать пустые строки, ноль, null, undefined
let arr = [ '', 'name', 127, 0, undefined, null, -12]

// Через цикл for сравниваем все значения
let filterArr = []
for ( let i = 0; i < arr.length; i++ ) {
  if( arr[i] !== '' && arr[i] !== 0 &&  arr[i] !== undefined && arr[i] !== null ) filterArr.push(arr[i])
}

// Тут сработает приведение типа значения к Bollean (false / true)
for ( let i = 0; i < arr.length; i++ ) {
  if( arr[i]) filterArr.push(arr[i])
}

// Так же приведение типов но через функцию filter. Происходит цикл через
// каждый элемент если возвращается true то элемент добавляется в новый
// массив.
const filterArr = arr.filter( el => el)

// Встроенная функция Boolean принимает параметр и возвращает false / true
// Так как параметр совпадает его можно не указывать
const filterArr = arr.filter( Boolean )

Заключение

Если я что-то забыл или не знаю, то напишите об этом в комментариях или мне на почту. Надеюсь что статья была полезна и вы узнали что нибудь новое для себя.


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *