Supongo que los escritores de esa función agregaron esa codificación innecesaria a través de nada más que simple ignorancia. El escapado de barras diagonales es no es necesario.
Una cantidad sorprendentemente grande de programadores que he conocido son igual de malos al mantener sus barras diagonales rectas como en el resto del mundo. Y un número aún mayor es realmente pobre al hacer la codificación y decodificación correctamente.
Actualización:
Después de hacer algunas búsquedas, me encontré con this discussion. Trae a colación un buen punto que escapando un /
a veces es necesario para los analizadores de HTML malos. Me he encontrado con un problema de una vez en cuando IE 6 trata incorrectamente el contenido de la siguiente manera:
<script>
var json = { scriptString: "<script> /* JavaScript here */ </script>" };
</script>
IE 6 vería la </script>
dentro de la cadena y cerrar la etiqueta de script demasiado pronto. Por lo tanto, esto es más segura IE 6 (aunque la etiqueta script abertura en cadena también podría romper cosas ... No puedo recordar):
<script>
var json = { scriptString: "<script> \/* JavaScript here *\/ <\/script>" };
</script>
Y también dicen que algunos analizadores malas verían el //
en http://
y trata el resto de la línea como un comentario de JavaScript.
Parece que se trata de un caso más de tecnologías de Internet secuestradas por Browser Fail.
Estoy de acuerdo. Pero vale la pena señalar que la cadena resultante * es * válida. En las cadenas de javascript, puede escapar del carácter * any * precediéndolo con una barra diagonal inversa. Entonces "\ /" es interpretado por Javascript simplemente como '/'. – Lee
JSON no es lo mismo que JavaScript. En JSON no tienes permitido hacer una barra diagonal inversa en lo que quieras. Pero, curiosamente, puedes hacer una barra diagonal inversa en una cadena, por lo que sigue siendo válida. :) – hobbs