2012-05-22 24 views
5

Tengo una pregunta sobre el escape de caracteres en JavaScript con la que espero que pueda ayudar. Digamos que si tengo el siguiente código JavaScript:Escapar caracteres en JavaScript, comillas simples o dobles

document.write("<img src=\"http://www.google.com\" />"); 

Ahora bien, en el ejemplo anterior, se puede ver que he comenzado el document.write con comillas dobles " y por lo tanto por lo que necesito para escapar de las cotizaciones en el < img src="" /> para asegurar que JavaScript todavía piensa que es una cadena.

Pero en el ejemplo siguiente puede ver que he usado una comilla simple ' para comenzar la declaración document.write. Mi pregunta es, ¿aún necesito escapar de las comillas dobles? Sé que la declaración funcionará sin esto, pero ¿cuál es la mejor práctica?

document.write('<img src=\"http://www.google.com\" />'); 

La razón que pido es que tengo una sentencia condicional que he escrito que los incendios fuera de una imagen (como por la línea de arriba), pero no parece estar funcionando y para descartar todas las posibilidades en cuanto a lo que puede estar causando esto. Me encuentro con cosas como esta casi todos los días, así que cualquier ayuda sería muy apreciada. Esta puede ser una pregunta tonta, así que le pedimos disculpas de antemano ...

+0

Yo voto que esta pregunta desmarcado como un embaucador porque el que se refiere como primario no lo solicita NI cubre el debate sobre "mejores prácticas", mientras que en (este) mensaje el tema de las mejores prácticas está cubierto en detalles apropiados. –

Respuesta

13

Al usar comillas simples, solo necesita escapar comillas simples, no comillas dobles.

(EDIT: Y viceversa)

+0

gracias. ¿Hay algo de malo en escapar de las comillas dobles en el segundo ejemplo? ¿Qué pasaría si lo hiciera de todos modos? – zik

+0

No tiene ningún problema (¡excepto que google.com no devuelve una imagen!) – Tim

+0

Jaja, sí, posiblemente sea un mal ejemplo pero ve a lo que conduzco. Gracias por la respuesta. – zik

1

document.write('<img src="http://www.google.com" />'); funcionará bien.

mismo ocurre con document.write("<img src='http://www.google.com' />");

3
document.write('<img src="http://www.google.com" onClick="foo(\'bar\');" />'); 

Sólo se necesitan para escapar de la misma clase de citas que está utilizando.

+0

hey, qué pasa si tengo 'var data =" bar "'; y quiero usar esta variable en lugar de '\ 'bar \''?Entendí lo que está tratando de decir aquí ... pero mi condición es tal que tengo que usar la variable en lugar de '\ bar \' –

+0

@Digital_at_heart - No importa la forma en que se definan las comillas. '' ';' – OptimusCrime

0
<html> 
<body> 

<script type="text/javascript"> 

document.write(escape("<img src=\"http://www.google.com\" />")); 

</script> 

</body> 
</html> 
3

Ahora, ya tiene la imagen: no es necesario que escape las comillas que no está utilizando como delimitadores de esa cadena en particular. Sin embargo: lo que es una buena práctica es una historia diferente. Conozco a algunas personas que te dirán que "siempre escapar de las citas" es un buen hábito para entrar. Estoy en desacuerdo. A diferencia de algunos otros lenguajes, JavaScript es razonablemente indulgente cuando se trata de caracteres que escapan: en el segundo ejemplo, las barras invertidas no se imprimirán.

Esto no es siempre el caso, por lo que mi sugerencia sería: ser coherente en las citas que utiliza (individuales || dobles) y escapar solo las que necesitan escaparse. Dependiendo de qué otros idiomas esté utilizando, es posible que desee pensar un poco en qué citas va a utilizar. Si usa PHP, por ejemplo, cumpla con comillas simples, ya que las comillas dobles no solo delimitan una cadena. Si está acostumbrado a escribir lenguajes parecidos a C (o Java), mejor se quede con el hábito de usar comillas dobles, ya que hay una diferencia aún mayor entre las comillas simples y dobles en esos idiomas

+0

Gracias por esto. Tiendo a usar comillas dobles en JavaScript como una cuestión de coherencia, pero creo que las comillas simples para un idioma como JavaScript son más fáciles de seguir. – zik

+2

En general, sí, especialmente si está creando nuevos elementos como una cadena, puede pegar fácilmente con comillas dobles, y usar 'var newImg = document.createElement (" img ");' y asignarle sus atributos de esta manera: 'newImg.src =" http://www.google.com ";' evitando de forma clara el escape de los delimitadores de cadenas o la mezcla de tipos de comillas. –

Cuestiones relacionadas