Функции в CoffeeScript - PullRequest
       3

Функции в CoffeeScript

49 голосов
/ 01 июня 2011

Я пытаюсь преобразовать function из Javascript в CoffeeScript. Это код:

function convert(num1, num2, num3) {
    return num1 + num2 * num3;
}

Но как мне это сделать в CoffeeScript?


Я пытаюсь запустить функцию из источника HTML следующим образом:

<script type="text/javascript" src="../coffee/convert.js"></script>

<script type="text/javascript">
    convert(6, 3, 10);
</script>

Но это не сработает, и я получаю сообщение об ошибке: ReferenceError: Can't find variable: convert

Как это исправить?

Ответы [ 6 ]

78 голосов
/ 02 июня 2011

Вам необходимо экспортировать функцию преобразования в глобальную область.
См. Как Coffescript может обращаться к функциям из других ресурсов?

window.convert = (num1, num2, num3) ->
  num1 + num2 * num3
33 голосов
/ 05 июня 2011

@ Lawnsea ответ отличный.

Я просто хочу добавить несколько мыслей.

Вместо того, чтобы загрязнять глобальное пространство имен, я предпочитаю добавить только одну переменную к объекту window.

window.App = {}

Тогда вы можете иметь доступ к App по всему миру и добавлять все свои вещи туда. функцию convert теперь можно выразить так:

App.convert = convert = (a, b, c) -> a + b * c

Затем для вызова функции в локальной области действия

convert 1,2,3

А теперь и во всем мире

App.convert 1,2,3
17 голосов
/ 27 марта 2012

На верхнем уровне вашего файла coffeescript, этот (он же @ ) должен ссылаться на окно . Таким образом, чтобы прикрепить его здесь, вы можете использовать сокращение:

@convert = (num1, num2, num3) -> num1 + num2 * num3

Обратите внимание, что это загрязняет глобальное пространство имен. Решение, опубликованное jm- , более разумно. Но вы можете заменить

window.App = {}

с

@App = {}

Преимущество использования @ заключается в том, что он ссылается на global в файле node.js, поэтому вы можете использовать один и тот же код для представления своих функций как в браузерной, так и в серверной среде.

5 голосов
/ 01 июня 2011
window.convert = (num1, num2, num3) ->
  num1 + num2 * num3
1 голос
/ 01 июня 2011

Вы должны проверить эти удивительные слайды, только что выпущенные сегодня godfoca http://www.slideshare.net/godfoca/lets-have-a-cup-of-coffeescript Кроме того, вы можете попробовать код через Интернет на http://jashkenas.github.com/coffee-script/

convert = (num1, num2, num3) ->
  num1 + num2 * num3
0 голосов
/ 01 июня 2011
convert = (num1, num2, num3) -> num1 + num2 * num3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...