Chuỗi C vẫn trỏ đến một địa chỉ trong bộ nhớ nơi "Hello \ 0World" được lưu trữ, chỉ rằng hầu hết các hàm xử lý chuỗi đều xem 0 kết thúc chuỗi. Đối với một số chức năng, bạn phải vượt qua một đối số độ dài chuỗi, nhưng hầu hết chỉ đọc cho đến khi chúng tìm thấy byte rỗng. Trong bộ nhớ chuỗi thực sự là "Hello \ 0World \ 0".
Một công cụ JavaScript không thể xác định độ dài chuỗi bằng cách tìm kiếm một byte rỗng, vì bạn trong trường hợp như vậy sẽ không bao giờ có thể có một nullbyte bên trong một chuỗi. Có lẽ có điều gì đó về điều đó trong các thông số kỹ thuật. Thay vào đó, công cụ phải lưu trữ độ dài của chuỗi riêng biệt và sau đó đọc nhiều ký tự đó từ bộ nhớ bất cứ khi nào bạn truy cập chuỗi.
Và cách phân tích cú pháp và lưu trữ kích thước bộ đệm đúng cách là ngôn ngữ kịch bản thường cố gắng ẩn khỏi người dùng. Đó là một nửa mục đích của kịch bản, không yêu cầu lập trình viên phải lo lắng về việc thêm 0
để tạo bộ đệm ký tự và lưu trữ chuỗi riêng biệt sao cho các hàm xử lý chuỗi không in một loạt các ký tự ngẫu nhiên bên ngoài bộ đệm của bạn tìm kiếm một nullbyte .. .
Vì vậy, chính xác chuỗi JavaScript hoạt động như thế nào? Tôi không biết, nó có thể lên đến động cơ để mô tả tính chất của nó trong chiều sâu. Miễn là bạn giao diện với đối tượng như đặc điểm kỹ thuật nói, nó có thể được thực hiện theo bất kỳ cách nào, sử dụng cấu trúc cho bộ đệm và độ dài, sử dụng ký tự dịch cho 0, sử dụng danh sách ký tự liên kết, v.v ...
I nghĩ rằng Javascript không phải là C. vì vậy các byte null trong một chuỗi chỉ đơn giản là một byte null trong một chuỗi. –
Hầu hết các ngôn ngữ theo truyền thống Pascal đại diện cho chuỗi như là một mảng với độ dài số nguyên (do đó cho phép ký tự null). C thực ra là cái lẻ trong ý nghĩa này. – hugomg