2012-08-23 34 views
7

que vienen a esta pregunta:¿CoffeeScript admite la interpolación en cadena de comillas simples?

f = (param) -> 
     console.info '#{param}' 
f(1) 

El resultado es #{param}

Cuando Adjunto la cadena con comillas dobles, esto sólo se imprime 1. También lo probé en Ruby, su comportamiento es el mismo. Pero eso solo contradice la regla en CoffeeScript.org:

La regla de oro de CoffeeScript es: "Es solo JavaScript".

Porque creo que en Javascript, las comillas simples y las comillas dobles se tratan por igual. Y no uso a Ruby a menudo. ¿Alguien puede explicar por qué?

Muchas gracias.

+1

Es solo una regla de oro que termina * siendo * JavaScript, eso no significa que actúe como una lista de JavaScript en el nivel de fuente de CoffeeScript. Hay magia en todo el lugar. –

Respuesta

11

"Es solo javascript" significa que se compila fundamentalmente con JavaScript normal y no intenta tomar un paradigma de programación radicalmente diferente y compilarlo en JavaScript. CoffeeScript se ocupa principalmente de evitar "las partes incorrectas", la repetición y la sintaxis innecesaria en lugar de introducir construcciones básicas radicalmente diferentes, como tipos de datos, etc.

JavaScript no tiene interpolación de cadenas. CoffeeScript trae esto de Ruby como una conveniencia. Deshabilitarlo para comillas simples solo te da una forma limpia de obtener una cadena sin interpretar la interpolación.

No tome Es sólo JavaScript para significar Es JavaScript. Es un sabor/variante/hermano.

+0

A diferencia de la interpolación ruby ​​de una cadena (comillas dobles) frente a cadenas literales (comillas simples) * compilar * a JavaScript como una cadena. Por lo tanto, no hay * tiempo de ejecución * por encima. Tal vez haya un tiempo de compilación sobrecargado. Sin embargo, como en ruby, la diferencia en el rendimiento es tan insignificante que el uso de single versus double es más estilo/preferencia personal que rendimiento. – Sukima

+0

"JavaScript no tiene interpolación de cadenas". Finalmente lo hace en es6 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals :) – IonicBurger

13

Desde el CoffeeScript documentation:

-estilo Rubí interpolación de cadenas está incluido en CoffeeScript. Las cadenas de comillas dobles permiten valores interpolados, usando # {...}, y las cadenas de una sola cita son literales.

+3

Excepto que las cadenas de comillas simples son * no * realmente literales ya que están en Ruby. En Javascript, las cadenas de comillas simples actúan como cadenas de comillas dobles e interpretan y tratan la barra invertida como un carácter de escape para \ n, etc., lo que requiere que se escapen las barras inversas reales. Coffeescript perpetúa este comportamiento por razones que no me quedan claras. –

+1

Esta debería ser la respuesta. –

Cuestiones relacionadas