13

次の CoffeeScript コード:

do (a) ->
    console.log a

これを生成します:

(function(a) {
  return console.log(a);
})(a);

このような値を渡すにはどうすればよいですか?

(function(a) {
  return console.log(a);
})("hello");
4

4 に答える 4

21
do (a = 'hello') ->
  console.log a

あなたが望むものを正確に生成します。

とはいえ、それを行う意味がわからないことを認めなければなりません。そのスコープ内でaリテラル値を本当に取得したい場合は、別のスコープを作成する必要はありません。として宣言された通常の変数'hello'で十分です。さて、別の変数の値(ループなどで変化する可能性があります)に置き換えて実行したい場合は、より理にかなっていると思いますが、単純に実行して、スコープ内の代わりに使用することもできます。aa = 'hello'ado (a = b) ->do (a) ->abdo

于 2012-08-08T17:09:48.097 に答える
2

あなたはこれを行うことができます

do (a = "foo")->
    console.log a

しかし、本当になぜあなたはこれをするのですか?WHatは、実装しようとしているより完全なユースケースです

于 2012-08-08T17:11:01.353 に答える
2

doは、CoffeeScript の特別なキーワードです。閉鎖を作成します。私はあなたがこのようなものが欲しいと思います:

log = (msg) ->
  console.log msg

コンパイルすると:

var log;

log = function(msg) {
  return console.log(msg);
};

他の関数と同じように使用します。log("hello")

于 2012-08-08T16:57:49.667 に答える