10

Coffeescriptのドキュメントを読んだとき、私は存在する演算子に関するわずかなドキュメントに混乱しました。ドキュメントには次のように記載されています

It( ) は、数値や文字列を処理する場合に、提供する?=よりも安全な条件付き割り当てに使用することもできます。||=

?=と演算子の違いは何ですか?||=また、どちらをいつ使用する必要がありますか?

4

1 に答える 1

19

?||まったく異なる(ただし重複している)条件を確認します。

||演算子はJavaScriptの場合とまったく同じように機能するため、以下のようなものは0誤り''です||||JavaScriptの意味で真実性をチェックします。

?演算子は== nullJavaScriptで変換されるため、isまたは;の場合a ? bのみです。CoffeeScriptの意味での定義をチェックします。banullundefined?

これらを考慮してください:

for v in [false, 0, '', null, undefined, 6]
    do (v) ->
        a = v
        a ||= 'pancakes'
        console.log("#{v} ||= 'pancakes':", a)

for v in [false, 0, '', null, undefined, 6]
    do (v) ->
        a = v
        a ?= 'pancakes'
        console.log("#{v} ?= 'pancakes':", a)

最初のループは5つのパンケーキと1つを提供し、62番目のループは、、、、 2つのパンケーキ、およびを提供しfalseます。0''6

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

したがって、JavaScriptスタイルの動作(つまり、、、およびを無視する)のみが必要な場合0false''おそらくが必要です||=。スキップしたいだけでnullundefined次に必要な場合?=

于 2013-03-27T00:33:39.647 に答える