次の CoffeeScript コード:
do (a) ->
console.log a
これを生成します:
(function(a) {
return console.log(a);
})(a);
このような値を渡すにはどうすればよいですか?
(function(a) {
return console.log(a);
})("hello");
次の CoffeeScript コード:
do (a) ->
console.log a
これを生成します:
(function(a) {
return console.log(a);
})(a);
このような値を渡すにはどうすればよいですか?
(function(a) {
return console.log(a);
})("hello");
do (a = 'hello') ->
console.log a
あなたが望むものを正確に生成します。
とはいえ、それを行う意味がわからないことを認めなければなりません。そのスコープ内でa
リテラル値を本当に取得したい場合は、別のスコープを作成する必要はありません。として宣言された通常の変数'hello'
で十分です。さて、別の変数の値(ループなどで変化する可能性があります)に置き換えて実行したい場合は、より理にかなっていると思いますが、単純に実行して、スコープ内の代わりに使用することもできます。a
a = 'hello'
a
do (a = b) ->
do (a) ->
a
b
do
あなたはこれを行うことができます
do (a = "foo")->
console.log a
しかし、本当になぜあなたはこれをするのですか?WHatは、実装しようとしているより完全なユースケースです
do
は、CoffeeScript の特別なキーワードです。閉鎖を作成します。私はあなたがこのようなものが欲しいと思います:
log = (msg) ->
console.log msg
コンパイルすると:
var log;
log = function(msg) {
return console.log(msg);
};
他の関数と同じように使用します。log("hello")