神秘的javascript行为:不等于等于

时间:2012-02-12 21:20:49

标签: javascript

我真的不知道怎么可能,而且我无法在简化的环境中重现错误,比如JSFiddle。但这是它在我的应用程序中的样子。

我正在尝试将值为'True','False'或'something else'的值转换为布尔值,如果它是True或False。在大多数情况下,它工作得很好(尽管它们可能是一种更加光滑的转换方式),如下图所示

enter image description here

然而有时失败并且手表的价值显示如下:

enter image description here

因此突然变量值为“True”的字符串变量不等于“True”字符串文字。我迷路了。这怎么可能?我在这里错过了什么?

提前致谢

2 个答案:

答案 0 :(得分:4)

也许您的字符串包含调试工具未显示的字符。以下是Google Chrome控制台中的示例:

> var a = "foo";
> var b = "foo\r";
> a
"foo"
> b
"foo"
> a === b
false

很难说出你的情况会发生什么,但你可以使用'神秘'字符串的.length.charAt(i)属性来查明正在发生的事情。

答案 1 :(得分:0)

为了理智,使用双引号而不是单引号来测试=== "True"。它不应该重要,但只是排除它:)