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
これを修正する方法は?
変換関数をグローバルスコープにエクスポートする必要があります。
参照 Coffescriptは他のアセットの機能にどのようにアクセスできますか?
window.convert = (num1, num2, num3) ->
num1 + num2 * num3
@lawnseaの答えは素晴らしいです。
ちょっと考えを加えたいだけです。
グローバル名前空間を汚染する代わりに、window
オブジェクトに変数を1つだけ追加することを好みます。
window.App = {}
その後、App
にグローバルにアクセスし、そこにすべてのものを追加できます。関数convert
は、次のように表現できるようになりました。
App.convert = convert = (a, b, c) -> a + b * c
次に、ローカルスコープ内で関数を呼び出す
convert 1,2,3
そして今、世界的に
App.convert 1,2,3
Coffeescriptファイルの最上位では、-this(別名@)はwindowを参照する必要があります。したがって、ここに添付するには、速記を使用できます。
@convert = (num1, num2, num3) -> num1 + num2 * num3
ただし、これはグローバル名前空間を汚染することに注意してください。 jm-によって投稿されたソリューションは、より慎重です。しかし、あなたは置き換えることができます
window.App = {}
と
@App = {}
@を使用する利点は、node.jsでglobalを参照するため、同じコードを使用してブラウザー環境とサーバーサイド環境の両方で関数を公開できることです。
window.convert = (num1, num2, num3) ->
num1 + num2 * num3
Godfocaが本日公開したばかりのこれらの素晴らしいスライドを確認してください http://www.slideshare.net/godfoca/lets-have-a-cup-of-coffeescript また、 the-web at http://jashkenas.github.com/coffee-script/
convert = (num1, num2, num3) ->
num1 + num2 * num3
convert = (num1, num2, num3) -> num1 + num2 * num3