为什么这些评估不一样?

时间:2016-08-17 20:48:15

标签: javascript

我今天遇到了一个奇怪的问题,我想知道为什么会发生这种情况......我的印象是,在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
    }
}

任何人都能解释发生了什么吗?我很想知道。

2 个答案:

答案 0 :(得分:3)

大多数字符串是" truthy"值:



if('false') {
  alert('A string is usually truthy!');
}




答案 1 :(得分:1)

在第一种情况下,您要严格检查值为'true'的字符串,在第二种情况下,您要检查任何truthy值,

truthy values and falsy explanation