CoffeeScript には C スタイルの?:
3 項がないため、次のようになります。
!@valid() ? 'disabled' : ''
次のように解析されます。
!@valid() ? ({ 'disabled' : '' })
これは存在演算子です:
実存的オペレーター
JavaScript で変数の存在を確認するのは少し難しいです。if (variable)
... 近いですが、ゼロ、空の文字列、および false の場合は失敗します。CoffeeScript の存在演算子?
は、変数がnullまたはundefinedでない限り true を返します。これは、Ruby のものと似ています。nil?
オブジェクトリテラルと組み合わせる。したがって、あなたが見ている奇妙に見える JavaScript です。
CoffeeScript はの代わりにif
式?:
を使用します。
CoffeeScript は、可能な場合は三項演算子を使用し、そうでない場合はクロージャー ラッピングを使用して、 ifステートメントを JavaScript 式にコンパイルできます。CoffeeScript には明示的な 3 項ステートメントはありません。通常のifステートメントを 1 行で使用するだけです。
これを JavaScript で言うと、次のようになります。
!this.valid() ? 'disabled' : ''
次に、CoffeeScript で次のように言います。
if !@valid() then 'disabled' else ''
そして"#{...}"
式で動作するので:
className: "btn btn-primary #{if @valid() then 'disabled' else ''}"