CoffeeScript是否允许JavaScript样式==相等语义?

CoffeeScript是否允许JavaScript样式==相等语义?,javascript,coffeescript,Javascript,Coffeescript,我喜欢。但是如果您想要原始的JS==语义呢?有空吗?我仔细阅读了文档,找不到任何支持此功能的内容 更一般地说,有没有办法将普通JS内联到我的CoffeeScript代码中,这样编译器就不会触及它 我更愿意避免编辑编译后的JavaScript输出,因为我在VisualStudio中使用它来自动生成它 if (a == b) { console.log("" + a + " equals " + b + "!"); } var x; x = 10; console.log(x != null)

我喜欢。但是如果您想要原始的JS
==
语义呢?有空吗?我仔细阅读了文档,找不到任何支持此功能的内容

更一般地说,有没有办法将普通JS内联到我的CoffeeScript代码中,这样编译器就不会触及它

我更愿意避免编辑编译后的JavaScript输出,因为我在VisualStudio中使用它来自动生成它

if (a == b) {
  console.log("" + a + " equals " + b + "!");
}
var x;
x = 10;
console.log(x != null);
var x;
console.log(typeof x !== "undefined" && x !== null);
作为一个可能的扩展,是否有一种方法可以将常规JS块内联到CoffeeScript代码中,从而使其不被编译

对。您需要将JavaScript代码包装成反标记(
`
)。这是在CoffeeScript中直接使用JavaScript的
==
的唯一方法。例如:

CoffeeScript源[] 编译JavaScript
if (a == b) {
  console.log("" + a + " equals " + b + "!");
}
var x;
x = 10;
console.log(x != null);
var x;
console.log(typeof x !== "undefined" && x !== null);

==null
/
未定义的
/
无效0
的特定情况由后缀存在运算符
提供:

CoffeeScript源[] 编译JavaScript
if (a == b) {
  console.log("" + a + " equals " + b + "!");
}
var x;
x = 10;
console.log(x != null);
var x;
console.log(typeof x !== "undefined" && x !== null);
CoffeeScript源[] 编译JavaScript
if (a == b) {
  console.log("" + a + " equals " + b + "!");
}
var x;
x = 10;
console.log(x != null);
var x;
console.log(typeof x !== "undefined" && x !== null);

这不是确切的答案,但我遇到了这个问题,因为jQuery的.text()包含空格,而“is”在Coffeescript中失败。使用jQuery的trim函数绕过它:

$.trim(htmlText) is theExpectedValue 

为什么需要
==
?做这件事的公认方法是通过显式强制
a.toString()==b.toString()
parseInt(a,10)==parseInt(b,10)
=
是不可信的,除了极少数可以证明应该由coffee脚本编译器为您处理的特定情况。@Joseph-“Pored”是一个词,它与“pour”的意思不同。我的意思只是说,大多数coffee脚本编写者坚持使用backticks是“做错了”。但是如果你对此很冷静,那就发疯吧:)@Justin
+a===+b
在这个例子中会做你想做的事情。这是一个很好的小把戏@TrevorBurnham,除非知道
a
b
包含整数值,否则它不是真正等价的。例如,
parseInt('2.3',10)==parseInt('2.4',10)
为真,但
+'2.3'===+'2.4'
为假。完美。
`
包装器正是我想要的,谢谢你。+1提到存在运算符。我一直在寻找==语义,只需注意,这与Coffescript的=>块语法和
this
关键字冲突。如果您将
放在刻度内,则需要将其更改为\u this或绕过问题。