Всем привет! В этом материале мы продолжим изучать coffeescript и поговорим про операторы .

Изучаем 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)

Как вы могли заметить, второй вариант намного более оптимизирован, т.к. там идет меньше проверок.

Итак, на этом все. Спасибо за внимание!