Việc triển khai Storage của Firefox chỉ có thể lưu trữ các chuỗi, nhưng vào tháng 9 năm 2009 , W3C đã sửa đổi bản nháp để chấp nhận bất kỳ dữ liệu nào.Việc triển khai (vẫn) chưa được bắt kịp( xem Chỉnh sửa bên dưới ).
Vì vậy, trong trường hợp của bạn, boolean được chuyển đổi thành một chuỗi.
Đối với lý do tại sao "true" != true, như được viết trong mô tả của Equal ( ==) trong MDC *:
Nếu hai toán hạng không cùng loại, JavaScript sẽ chuyển đổi các toán hạng sau đó áp dụng so sánh chặt chẽ. Nếu một trong hai toán hạng là một số hoặc một boolean, các toán hạng được chuyển đổi thành số nếu có thể; khác nếu một trong hai toán hạng là một chuỗi, toán hạng kia được chuyển đổi thành một chuỗi nếu có thể.
Lưu ý rằng chuỗi được chuyển đổi thành Số thay vì Boolean . Vì được "true"chuyển đổi thành một số NaN, nó sẽ không bằng bất kỳ thứ gì, vì vậy falseđược trả về.
(*: Đối với tiêu chuẩn thực tế, xem ECMA-262 §11.9.3 “Thuật toán so sánh bình đẳng trừu tượng”)
Chỉnh sửa: Các setItemgiao diện đã được trở lại là chấp nhận chuỗi chỉ trên 2011 Tháng Chín dự thảo 1st để phù hợp với hành vi của hiện thực đang tồn tại, như không ai trong số các nhà cung cấp được quan tâm trong việc hỗ trợ lưu trữ không dây. Xem https://www.w3.org/Bugs/Public/show_bug.cgi?id=12111 để biết chi tiết.