【发布时间】:2016-08-17 20:48:15
【问题描述】:
我今天遇到了一个奇怪的问题,我想知道为什么会这样……我的印象是,在 javascript 中,任何没有明确为假(假、0 或 NULL)的东西都会返回真。
在示例 1 中将 console.log() 附加到 isNative 和示例 2 中的 localStorage.getItem(app + ".native_context") 时,两者都返回“false”。然而,当实际运行这些时,示例 1 在这两种情况下都可以工作,但示例 2 无论如何都会返回 true,这让我觉得一切都被接受为 true。
示例 1:
var isNative = localStorage.getItem(app + ".native_context");
if (isNative === "true") {
//do x
} else {
//do y
}
}
示例 2:
if (localStorage.getItem(app + ".native_context")) {
//do x
} else {
//do y
}
}
谁能解释发生了什么?我很想知道。
【问题讨论】:
-
如果它包含一个字符串
"false",那么它是一个非空字符串,它是真实的。 -
字符串不是布尔值。
-
我们不知道
localStorage.getItem(app + ".native_context")的评估结果。显然它不是字符串“true”。 -
isNative === "true" 检查
isNative是否是一个与 "true" 完全一样的字符串。这些例子完全不相关 -
哇,不知道我怎么没注意到。我的错。谢谢@Juhana
标签: javascript