5

次のコード行があります。

console.log "source = #{@source.alignment} unit = #{unit.alignment}: " + (@source.alignment is not unit.alignment)

これはこれをコンソールに出力しています:

ソース = 良いユニット = 悪い: false

「false」と出力されるのはなぜですか?「true」を印刷するべきではありませんか?論理的には、良いことは悪いことではありません。

これ

console.log "source = #{@source.alignment} unit = #{unit.alignment}: " + (@source.alignment != unit.alignment)

版画

ソース = 良いユニット = 悪い: true

予想通り。

違いは何ですか?いつ使用する必要がありますis notか?

4

1 に答える 1

7

これは演算子の優先順位の問題です:

a is not b => a is (not b)

つまり、これは次の js にコンパイルされます。

a === !b

あなたの場合、 b は unit.alignment であり、その var が存在し、その値が偽ではないため、 !unit.alignment は false を返します

問題を解決するには、Coffeescript ドキュメントのisntoperatorを確認してください

于 2013-06-21T01:59:37.690 に答える