字符串对象比较总是返回false

时间:2013-11-22 05:20:11

标签: javascript

以下是我正在执行的代码:

filterIssues: function(objectKey, text){
    var view = this;
    var keys = objectKey.split(".");
    var attributeKey = keys[0];
    var attributeName;
    if (keys.length > 1){
        attributeName = keys[1];
    }
    view.issues.each(function(issue){
        var value = issue.get(attributeKey);
        console.log(text);

        if (value === undefined || value === null){
            issue.trigger("hide");
            return;
        }

        if (attributeName !== undefined){
            value = value[attributeName];
        }

        if(value !== undefined){
            var matchedText = value.substring(0, text.length - 1);
            if ( matchedText === text){
                issue.trigger("show");
                console.log(value);  
                return;     
            }
        }
        issue.trigger("hide");
    });
}     

matchedText == text始终返回false

这是我在玩游戏机时所得到的:

> matchedText
"sande"
> text
"sande"
> typeof(text)
"string"
> typeof(matchedText)
"string"
> matchedText === text
false
> matchedText == text
false

我确实意识到这一点,===将始终检查两个对象是否相同并且我已阅读过 JavaScript equal operations anomaliesJavascript string equality

我忽略的代码中有什么问题吗?

2 个答案:

答案 0 :(得分:0)

我认为您滥用subString()方法。如果使用subString(),请使用不带-1的长度。

答案 1 :(得分:0)

好吧,我终于找到了问题所在。感谢您的回复,我相信您可能没有找到缺乏信息的答案。

问题在于我传递给函数的text值。 text最后包含"",这就是为什么比较不起作用的原因。