web-dev-qa-db-ja.com

CoffeeScriptはJavaScriptスタイルの==等価セマンティクスを許可しますか?

大好きです CoffeeScriptは==をJavaScript ===演算子にコンパイルします 。しかし、元のJS ==セマンティクスが必要な場合はどうでしょうか。それらは利用可能ですか?ドキュメントを調べましたが、これを可能にするものを見つけることができません。

より一般的には、コンパイラーがそれに触れないように、プレーンJSをCoffeeScriptコードにインライン化する方法はありますか?

Chirpy を使用してVisual Studioで出力を自動生成しているので、コンパイルされたJavaScript出力の編集は避けたいと思います。

57
Justin Morgan

これに対する可能な拡張として、コンパイルされないように通常のJSのブロックをCoffeeScriptコードにインライン化する方法はありますか?

はい、 ここにドキュメントがあります 。 JavaScriptコードをバッククォート(`)でラップする必要があります。これは、CoffeeScriptでJavaScriptの==を直接使用する唯一の方法です。例えば:

[ お試しください ]
if `a == b`
  console.log "#{a} equals #{b}!"
if (a == b) {
  console.log("" + a + " equals " + b + "!");
}

== null/undefined/void 0の特定のケースは、postfix存在演算子?によって処理されます。

[ お試しください ]
x = 10
console.log x?
var x;
x = 10;
console.log(x != null);
[ お試しください ]
# `x` is not defined in this script but may have been defined elsewhere.
console.log x?
var x;
console.log(typeof x !== "undefined" && x !== null);
78
Jeremy Banks

これは正確な答えではありませんが、jQueryの.text()に空白が含まれており、Coffeescriptで「is」が失敗していたため、この問題が発生しました。 jQueryのtrim関数を使用して回避します。

$.trim(htmlText) is theExpectedValue 
0
Tim Scollick