Разрешает ли CoffeeScript семантику равенства в стиле JavaScript ==? - PullRequest
56 голосов
/ 12 августа 2011

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

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

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

Ответы [ 2 ]

78 голосов
/ 12 августа 2011

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

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

Источник CoffeeScript [ Попробуйте ]
if `a == b`
  console.log "#{a} equals #{b}!"
Скомпилированный JavaScript
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);
0 голосов
/ 05 января 2015

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

$.trim(htmlText) is theExpectedValue 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...