web-dev-qa-db-fra.com

CoffeeScript autorise-t-il la sémantique d'égalité == de style JavaScript?

J'adore ça CoffeeScript compile == dans le JavaScript === opérateur . Mais si vous voulez le JS d'origine == sémantique? Sont-ils disponibles? J'ai parcouru la documentation et je ne trouve rien qui permette cela.

De manière plus générale, existe-t-il un moyen d'incorporer du JS brut dans mon code CoffeeScript afin que le compilateur n'y touche pas?

Je préfère éviter de modifier la sortie JavaScript compilée, car j'utilise Chirpy pour la générer automatiquement dans Visual Studio.

57
Justin Morgan

En tant qu'extension possible, existe-t-il un moyen d'intégrer des blocs de JS standard dans le code CoffeeScript afin qu'il ne soit pas compilé?

Oui, voici la documentation . Vous devez encapsuler le code JavaScript entre guillemets (`). C'est le seul moyen pour vous d'utiliser directement le == dans CoffeeScript. Par exemple:

[ essayez-le ]
if `a == b`
  console.log "#{a} equals #{b}!"
if (a == b) {
  console.log("" + a + " equals " + b + "!");
}

Le cas spécifique de == null/undefined/void 0 est servi par l'opérateur existentiel postfix ?:

[ essayez-le ]
x = 10
console.log x?
var x;
x = 10;
console.log(x != null);
[ essayez-le ]
# `x` is not defined in this script but may have been defined elsewhere.
console.log x?
var x;
console.log(typeof x !== "undefined" && x !== null);
78
Jeremy Banks

Ce n'est pas exactement la réponse, mais ce problème est venu pour moi car .text () de jQuery incluait des espaces et "is" échouait dans Coffeescript. Contournez-le en utilisant la fonction de découpage de jQuery:

$.trim(htmlText) is theExpectedValue 
0
Tim Scollick