为什么我的变量是真的而不是同时真的?

nic*_*ael 4 javascript

看看这个javascript:

localStorage.myAwesomeItem = true;
var item = localStorage.myAwesomeItem;
alert(item);
if(item==true)
    {alert("really true");}
else
    {alert("lies; not true");}
Run Code Online (Sandbox Code Playgroud)

的jsfiddle

我将myAwesomeItem本地存储设置为true.精细.然后我将这个项目存储在一个名为的变量中item.并警惕检查其价值.如你所见,它是true.

然后我检查条件是否我的项目是真的.但事实并非如此.它适合else.

谁能解释我这种行为?

lal*_*iya 6

本地存储将存储的任何内容转换为字符串 所以你可以这样做:

if(item=="true")...
Run Code Online (Sandbox Code Playgroud)


Eas*_*ush 6

Localstorage将所有内容存储为字符串.因此,您输入的真实内容实际上保存为"true",而false则保存为"false".

javascript中的所有非空字符串都计算为true.

  • "javascript中的所有非空字符串都评估为true." 使用==比较字符串和布尔值时,这是无关紧要的.在这种情况下,布尔值将在比较之前转换为字符串,而不是相反. (2认同)