Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
$('div').hover(function(e){ ...}, function(e) {... })
$('div').hover(
((e) -> ...),((e) -> ...)
)
$('div').hover \
(e) -> 1,
(e) -> 1
$('div').hover(
(e) -> ,
(e) ->
)
$ \div .hover (e) ->, (e) ->
$("div").hover (e) ->
...
,(e) ->
...
$('div').hover(function(e){ $(this).find('span').show()}, function(e) { $(this).find('span').hide()})
$("div").hover ((e) ->
$(this).find("span").show()
), (e) ->
$(this).find("span").hide()
$("div").hover ((e) ->
e.find("span").show()
), (e) ->
e.find("span").hide()
$('.shopping_cart').bind 'click', (event) =>
@customer.purchase @cart
Но у CoffeeScript, есть преимущество, что ему не нужно сохранять совместимость с JavaScript...
Q: Will you add feature X where feature X depends on a platform?
A: No, implementation-specific features are not allowed as a policy. Everything that you write in CoffeeScript should be supported and runnable on any current JavaScript implementation (in practice, this means the lowest common denominator is IE6). Thus, features such as the following will not be implemented: getters & setters, yield
<script src='/coffee-script.js'></script>
<script src='/app.coffee' type='text/coffeescript'></script>
Но в этом есть смысл только на этапе разработки — лишняя работа на клиенте.coffee --watch --map$(Array(5)).map(function(i) { return Math.pow(++i, 3); });ES6 переплевывает Coffee.
some_func param1, param2. Но как вызвать функцию без параметров? Приходится опускаться до JS-нотации: some_func(). В чем тогда смысл сокращенной нотации вызова функций, если можно все делать по-старинке? В LiveScript все просто: some_function!one = {a:1, b:2}
two = {b:3, c:4}
one <<< two
one = one with two
Напишем простенький код на CoffeeScript:
square = (x) -> x * x cube = (x) -> square(x) * x
Его JavaScript-эквивалент:(function() { var cube, square; square = function(x) { return x * x; }; cube = function(x) { return square(x) * x; }; }).call(this);
function square(x) { return x * x; };
function cube(x) { return square(x) * x; };
он позволяет нагляднее выражать свои мысли и понимать чужие.
Уберегает особенно начинающих разработчиков от многих ошибок.Совсем не согласен. Возможно это мой субъективный опыт, но делал очень много ошибок когда пытался кодить на CoffeeScript. Постоянно приходилось проверять всё ли правильно сгенерировалось. А это время и рассеивание внимания.
healthy = if 200 > cholesterol then 1 else 0
let a = 1, b = a ? (console.log("good"), true) : false;
a = 1; b = if a then (console.log "good", true) else false
arr = [1,2,3]
[a, , b] = arr #тут ошибка
Знакомство с CoffeeScript