2

コーヒースクリプトでは、次のように関数で存在演算子を使用します。

myFunc?()

にコンパイルします

typeof myFunc === "function" ? myFunc() : void 0;

「void 0」の代わりになるものをエレガントに定義する方法はありますか? それとも、元の表記法を使用する代わりに、すべてを書き出す必要がありますか?

4

1 に答える 1

8

別の実存演算子を追加できます。

x = f?() ? 'pancakes'

f()返品のnull場合は機能しませんが、返品undefinedの場合は正しいことを行います。例えば:f()false

f = 'not a function'
console.log f?() ? 'pancakes'
# pancakes

f = -> 'is a function'
console.log f?() ? 'pancakes'
# is a function

f = -> null
console.log f?() ? 'pancakes'
# pancakes

f = ->
console.log f?() ? 'pancakes'
# pancakes

f = -> false
console.log f?() ? 'pancakes'
# false

デモ: http: //jsfiddle.net/ambiguous/f6yvN/1/

したがって、必要なものに近づくことができ、関数が返すことを期待しているものの種類によっては、それで十分に近い場合があります。

于 2012-04-16T04:37:21.023 に答える