Мы можем сократить наши условные операторы в JavaScript
Работая с JavaScript, я все еще пишу много условных операторов каждый день, и держу пари, что вы тоже. Вот что вы можете написать лучше условных выражений.
Понимание правды и лжи
Каждому значению в JavaScript присуще логическое значение, обычно называемое правдивым или ложным.
Ложь
Вот краткий список ценностей, которые являются ложной вежливостью.
false
null
- 0
NaN
(не число)''
или""
(пустая строка)undefined
Правда
Все остальное правда. Это включает:
'0'
(строка, содержащая один ноль)'false'
(строка, содержащая текст «false»)[]
(пустой массив){}
(пустой объект)function(){}
(«пустая» функция)
Имейте в виду, что массивы и объекты, даже пустые массивы и объекты, всегда правдивы.
Эквивалентность и идентичность
Эквивалентность
Эквивалентное значение, если оно такое же, но другого типа и проверяется с помощью ключевого слова ==
.
10 == '10' // true
empty string
равно false
(но не идентично).
'' == false // true
It is falsy
.
if (!‘’) { return 'I am false.' }
Личность
Идентичные значения означают, что они должны быть одного типа.
10 === '10' // false 10 === 10 // true
Массивы и объекты
Поскольку массивы и объекты всегда правдивы, мы должны найти другой способ проверить пустоту с помощью [] .length или Object.keys ({}). Length, который даст вам либо 0, либо хорошее правдивое число.
if (array && array.length) { // not empty }
Сократите условные операторы в JavaScript
Нам нужно понимать ложные и правдивые ценности. Они важны, потому что вы можете сократить многие длинные выражения.
Например: нам не нужно знать, дата это или название сертификата. Все, что нам нужно знать, это то, что ценность существует и что-то в ней есть.
const student = { name: 'Bob’, equipmentTraining: '', } if(!student.equipmentTraining) { return 'Not authorized to operate machinery' }
Может быть легко непреднамеренно создать ложное значение.
Наиболее частая проблема возникает, когда вы проверяете наличие в массиве, проверяя индекс значения. Например: здесь 0 - ложь.
[“a”, “b”, “c”].indexOf(“a”) << 0 // which is falsy
Что делать, если вы используете следующее выражение (здесь существует ключ «a»).
if (![“a”, “b”, “c”].indexOf(“a”)) { console.log(“a doesn’t exist”) } >> a doesn't exist
Если вы получили неопределенное или нулевое значение, может возникнуть ложное значение.
Сделайте ваш код более чистым с помощью тернарного оператора
Я всегда стараюсь сократить выражение до минимального количества символов, которое я могу, с помощью тернарного оператора.
Например, если age
больше, чем 16
, то разрешить человеку управлять автомобилем можно закодировать следующим образом.
var age = 19 var canDrive if (age > 16) { canDrive = 'yes' } if (age <= 16) { canDrive = 'no’ }
Но мы можем использовать тернарный оператор как ярлык. Код выглядит намного чище.
var canDrive = age > 16 ? 'yes' : 'no'
Некоторые проблемы с новыми переменными
Что делать, если вы пытаетесь проверить переменную и используете переменную с блоком, вы не сможете получить доступ к переменной вне проверки.
Например.
if (type === ’bird’) { const move = [’walk’, ’fly’] } else { const move = [’walk’] } move // move is not defined << undefined
Итак, что нам нужно сделать перед блоком.
let move if (type === ’bird’) { move = [’walk’, ’fly’] } else { move = [’walk’] }
Мы можем переписать предыдущий код, чтобы использовать константу и тернар, как показано ниже.
const move = type === ’bird’ ? [’walk’, ’fly’] : [’walk’]
Что такое короткое замыкание?
Когда JavaScript оценивает выражение ИЛИ, если первый операнд истинен, JavaScript с коротким замыканием и даже не смотрит на второй операнд. Чтобы четко понять, что происходит в результате короткого замыкания, давайте рассмотрим следующую троицу, которая хорошо впишется.
var person = { name: 'Jack', age: 34 } console.log(person.job || 'unemployed') // 'unemployed'
Цель здесь довольно ясна. Если у человека есть задание (в данном случае это означает, что оно определено, а не является пустой строкой), то вы хотите распечатать задание. Если это falsy
, undefined
или ‘’
, тогда вы хотите использовать default
.
Легко, правда?
Спасибо, что прочитали 😘, до свидания, и не забудьте 👏 до 50 раз и подпишитесь!
Примечание из JavaScript In Plain English
Мы запустили три новых издания! Проявите любовь к нашим новым публикациям, подписавшись на них: AI на простом английском, UX на простом английском, Python на простом английском - спасибо и продолжайте учиться!
Мы также всегда заинтересованы в продвижении качественного контента. Если у вас есть статья, которую вы хотите отправить в какую-либо из наших публикаций, отправьте нам электронное письмо по адресу [email protected] с вашим именем пользователя Medium, и мы добавим вас в качестве автора. Также сообщите нам, к каким публикациям вы хотите быть добавлены.