Изучаем CoffeeScript. Операторы.
Всем привет! В этой статье мы продолжим изучать coffeescript и поговорим про операторы.
Итак, первое, что стоит сказать, это то, что вместо привычных & и || вы можете писать английские слова and и or.
true and true
on or no
Для логического отрицания есть ключевое слово not
not true and false
В coffeescript отсутствует сравнение с приведением типов, только строгое сравнение
true == 'true'
true != 'true'
a is 10 // a === 10
b isnt 20 // b !== 20
a is not b // a === !b
Также для этих целей есть английские слова is и isnt, как вы могли заметить выше. Заметьте, что isnt и is not в coffeescript разные вещи!
Думаю, вы и так все это прекрасно понимаете, поэтому дальше я буду просто приводить примеры кода на coffeescript и что в итоге скомпилируется в javascript.
update a if 10 < a < 20 // if((10 < a && a < 20)) { update(a); }
user = name: 'Alex'
'name' of user // 'name' in user
model = 1
change model if model // if(model) { change(model); }
В последнем примере, если переменная model будет равна 0, то скрипт будет работать неправильно, ведь 0 в логическом выражении - false. Как исправить? Просто добавьте знак вопроса в конце(без пробела!).
model = 0
change model if model? // if(model != null) { change(model); }
Другой пример применения этого оператора
model = 1
change? model if model? // if(model != null) { if(typeof change === 'function') { change(model); } }
И еще один очень полезный пример использования этого оператора
object = {}
object.property ?= 100 // if(object.property == null) { object.property = 100 }
Напоследок покажу еще один классный прием
object.prop = object.prop || 17 // object.prop = object.prop || 17
object.prop or= 17 // object.prop || (object.prop = 17)
Как вы могли заметить, второй вариант намного более оптимизирован, т.к. там идет меньше проверок.
Итак, на этом все. Спасибо за внимание!
-
- Михаил Русаков
Комментарии (2):
Михаил, ваши статьи очень интересные! Почему вы выпускайте их раз в неделю? Было бы очень круто если бы вы делали по две или три статьи в неделю, но это ваше дело...
Ответить
PHP_programer, понял ошибку, спасибо
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.