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

Jus*_*gan 55 javascript coffeescript

我喜欢CoffeeScript编译==成JavaScript ===运算符.但是如果你想要原始的JS ==语义怎么办?他们有空吗?我仔细阅读了文档,找不到任何能够实现此功能的内容.

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

我宁愿避免编辑已编译的JavaScript输出,因为我正在使用Chirpy在Visual Studio中自动生成它.

小智 78

作为对此的可能扩展,有没有办法将常规JS的块内联到CoffeeScript代码中,以便它不被编译?

是的,这是文档.您需要在反引号(`)中包装JavaScript代码.这是您==在CoffeeScript中直接使用JavaScript的唯一方法.例如:

CoffeeScript来源[ 试试 ]
if `a == b`
  console.log "#{a} equals #{b}!"
Run Code Online (Sandbox Code Playgroud) 编译的JavaScript
if (a == b) {
  console.log("" + a + " equals " + b + "!");
}
Run Code Online (Sandbox Code Playgroud)

== null/ undefined/ 的具体情况void 0由后缀存在运算符提供?:

CoffeeScript来源[ 试试 ]
x = 10
console.log x?
Run Code Online (Sandbox Code Playgroud) 编译的JavaScript
var x;
x = 10;
console.log(x != null);
Run Code Online (Sandbox Code Playgroud) CoffeeScript来源[ 试试 ]
# `x` is not defined in this script but may have been defined elsewhere.
console.log x?
Run Code Online (Sandbox Code Playgroud) 编译的JavaScript
var x;
console.log(typeof x !== "undefined" && x !== null);
Run Code Online (Sandbox Code Playgroud)

  • +1提及存在运算符.我正在为这种情况寻找==语义. (5认同)
  • 只是注意,这与Coffescript的=>块语法和`this`关键字冲突.如果你把'this`放在ticks中,你需要将它改为_this或绕过问题. (4认同)