我今天遇到了一个奇怪的问题,我想知道为什么会发生这种情况......我的印象是,在javascript中,任何未明确假的(false,0或NULL)都会返回true。
在示例1中将console.log()附加到isNative并在示例2中附加localStorage.getItem(app +“.native_context”)时,两者都返回“false”。但是,当实际运行这些时,示例1在两种情况下都会起作用,但是示例2无论如何都会返回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
}
}
任何人都能解释发生了什么吗?我很想知道。
答案 0 :(得分:3)
大多数字符串是" truthy"值:
if('false') {
alert('A string is usually truthy!');
}

答案 1 :(得分:1)
在第一种情况下,您要严格检查值为'true'
的字符串,在第二种情况下,您要检查任何truthy
值,