Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
158
rated 0 times [  160] [ 2]  / answers: 1 / hits: 158595  / 14 Years ago, fri, july 16, 2010, 12:00:00

I noticed that I cannot set boolean values in localStorage?



localStorage.setItem(item1, true);
alert(localStorage.getItem(item1) + | + (localStorage.getItem(item1) == true));


Always alerts true | false when I try to test localStorage.getItem(item1) == true it alerts true ... How can I set an item in localStorage to true?



Even if it's a string, I thought only === would check the type?



So



alert(true == true); // should be true? 

More From » javascript

 Answers
8

Firefox's implementation of Storage can only store strings, but on 2009 September, W3C modified the draft to accept any data. The implementation (still) isn't caught up yet (see Edit below).



So in your case the boolean is converted to a string.



As for why true != true, as written in the description of Equal (==) in MDC*:




If the two operands are not of the same type, JavaScript converts the operands then applies strict comparison. If either operand is a number or a boolean, the operands are converted to numbers if possible; else if either operand is a string, the other operand is converted to a string if possible.




Note that the string is converted to a Number instead of a Boolean. Since true converted to a number is NaN, it will not be equal to anything, so false is returned.



(*: For the actual standard, see ECMA-262 §11.9.3 “The Abstract Equality Comparison Algorithm”)






Edit: The setItem interface was reverted to accept strings only on the 2011 Sept 1st draft to match the behavior of existing implementations, as none of the vendors are interested in supporting storing non-strings. See https://www.w3.org/Bugs/Public/show_bug.cgi?id=12111 for detail.


[#96211] Wednesday, July 14, 2010, 14 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
josuea

Total Points: 609
Total Questions: 121
Total Answers: 104

Location: South Georgia
Member since Fri, Nov 13, 2020
4 Years ago
;