Tôi đoán là các tác giả của hàm đó đã thêm rằng mã hóa không cần thiết thông qua không có gì hơn là sự thiếu hiểu biết đơn giản. Thoát dấu gạch chéo về phía trước là không phải là yêu cầu.
Một số lượng lớn các lập trình viên đáng kinh ngạc mà tôi đã biết cũng tồi tệ với việc giữ dấu gạch chéo thẳng như phần còn lại của thế giới. Và một số thậm chí còn lớn hơn thực sự kém khi thực hiện mã hóa và giải mã đúng cách.
Cập nhật:
Sau khi thực hiện một số tìm kiếm, tôi tình cờ gặp this discussion. Nó mang lại một điểm tốt mà thoát một /
đôi khi là cần thiết cho các trình phân tích cú pháp HTML xấu. Tôi đã đi qua một vấn đề một lần mà khi IE 6 sai xử lý nội dung như thế này:
<script>
var json = { scriptString: "<script> /* JavaScript here */ </script>" };
</script>
IE 6 sẽ thấy </script>
bên trong chuỗi và đóng các thẻ script quá sớm. Như vậy, đây là hơn IE 6 an toàn (mặc dù thẻ mở kịch bản trong chuỗi cũng có thể phá vỡ mọi thứ ... Tôi không thể nhớ):
<script>
var json = { scriptString: "<script> \/* JavaScript here *\/ <\/script>" };
</script>
Và họ cũng nói rằng một số phân tích cú pháp xấu sẽ thấy //
trong http://
và xử lý phần còn lại của dòng như nhận xét JavaScript.
Vì vậy, có vẻ như đây là một trường hợp khác của công nghệ Internet bị tấn công bởi Lỗi trình duyệt.
Tôi đồng ý. Nhưng đáng chú ý là chuỗi kết quả * là * hợp lệ. Trong chuỗi javascript, bạn được phép thoát khỏi ký tự * bất kỳ * bằng cách đặt trước dấu gạch chéo ngược. Vì vậy, "\ /" được giải thích bằng Javascript đơn giản là '/'. – Lee
JSON không giống với JavaScript. Trong JSON bạn không được phép gạch chéo bất cứ thứ gì bạn thích. Nhưng tò mò, bạn được phép gạch chéo một dấu gạch chéo trong một chuỗi, vì vậy nó vẫn hợp lệ. :) – hobbs