Я не знаю, что делает Slim, но CoffeeScript обычно оборачивается функцией, чтобы избежать загрязнения пространства имен.Таким образом, ваш CoffeeScript, вероятно, в конечном итоге будет преобразован в JavaScript примерно так:
(function() {
var number, opposite, saybye;
number = 42;
opposite = true;
saybye = function() {
alert('hello' + number);
return '';
};
})();
В результате saybye
невидим для вашего HTML.
Вы действительно не должны бытьиспользуя onclick
в 2012 году, вы должны привязываться к событию через современный API.Если вы используете jQuery, вы бы сделали это следующим образом:
coffee:
number = 42
opposite = true
saybye = () ->
alert 'hello'+number
''
$ -> $('input[type=button]').click saybye
Если вы не используете jQuery (или аналогичный), вы бы сделали это нелегко, используя addEventListener
для необработанного объекта DOM.В качестве альтернативы вы можете поместить их в window
самостоятельно и обойти защиту области действия:
coffee:
window.number = 42
window.opposite = true
window.saybye = () ->
alert 'hello' + number
Что касается возврата чего-либо, не беспокойтесь об этом, возвращайте то, что имеет смысл.Иногда возвращение undefined
имеет смысл, иногда - нет.Если очевидного возвращаемого значения нет, просто позвольте CoffeeScript делать то, что ему нужно, иди с этим:
saybye = () ->
alert 'hello' + number
и переходи к более интересным проблемам.