Позволяет ли CoffeeScript семантику JavaScript-style == equality?


Я люблю, что CoffeeScript компилируется == в JavaScript === оператор. Но что делать, если вы хотите оригинальный JS == семантика? Они доступны? Я изучил документацию и не могу найти ничего, что позволило бы это сделать.

в более общем плане, есть ли способ встроить простой JS в мой код CoffeeScript, чтобы компилятор не касался его?

Я бы предпочел избежать редактирования скомпилированного вывода JavaScript, так как я использую веселый для автоматического создания его в Visual Studio.

2 55

2 ответа:

как возможное расширение к этому, есть ли способ встроить блоки регулярного JS в код CoffeeScript, чтобы он не компилировался?

да вот документация. Вам нужно обернуть код JavaScript в backticks (`). Это единственный способ для вас напрямую использовать JavaScript == в CoffeeScript. Например:

Источник В CoffeeScript [попробуй]
if `a == b`
  console.log "#{a} equals #{b}!"
Составленный Яваскрипт
if (a == b) {
  console.log("" + a + " equals " + b + "!");
}

конкретный случай == null/undefined/void 0 обслуживается постфиксным экзистенциальным оператором ?:

Источник В CoffeeScript [попробуй]
x = 10
console.log x?
Скомпилированный Код JavaScript
var x;
x = 10;
console.log(x != null);
Источник В CoffeeScript [попробуй]
# `x` is not defined in this script but may have been defined elsewhere.
console.log x?
Скомпилированный Код JavaScript
var x;
console.log(typeof x !== "undefined" && x !== null);

Это не совсем ответ, но эта проблема возникла для меня, потому что jQuery .text () включал пробелы, а " is " терпел неудачу в Coffeescript. Обойти его с помощью функции обрезки jQuery:

$.trim(htmlText) is theExpectedValue