Подтвердить что ты не робот

Разрешает ли CoffeeScript JavaScript-стиль == семантика равенства?

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Источник CoffeeScript [попробуйте]
x = 10
console.log x?
Скомпилированный JavaScript
var x;
x = 10;
console.log(x != null);
CoffeeScript Source [попробуйте]
# `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);

Ответ 2

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

$.trim(htmlText) is theExpectedValue