比较JavaScript中的字符串

时间:2011-06-05 16:44:20

标签: javascript string

我正在撰写Chrome扩展程序,部分内容是根据JSON文件检查查询。出于某种原因,当我使用==比较查询和JSON数据时,我不断得到奇怪的结果。

以下是代码:

    for(audio in newresponse.response)
    {
        console.log(song + " " + title);
        console.log(song == title);

        if(song == title)
        {
            console.log(newresponse.response[count].audio.url);
            chrome.tabs.create({url: newresponse.response[count].audio.url})
            break;
        }
        count++
    }

这是控制台:

tillimgonefeatwizkhalifa tillimgoneprodbystargate2o11
false
tillimgonefeatwizkhalifa tinietempahfeatwizkhalifatillimgone
false
tillimgonefeatwizkhalifa tillimgone
false
tillimgonefeatwizkhalifa tillimgonenew2011
false
http://cs4665.vkontakte.ru/u118769803/audio/d16ce7acd718.mp3

为什么if语句结果为真,显然不应该?

1 个答案:

答案 0 :(得分:3)

带URL的最后一行必须来自其他代码,而不是来自引用代码。

实际上,该输出与代码完全不匹配。在您的代码中,一切都没有变更songtitle ,所以我们应该只看到为{{1}中的可枚举属性重复相同的数据(因为newresponse.response循环将重复多次迭代)。

所以我认为这里的答案是:事实并非如此。您引用的输出来自早期使用不同代码的运行,或来自页面中其他位置的代码等。

但是对于记录,for将比较字符串的相等性,并且它将可靠地进行比较,因此如果在记录时得到==,则false语句的正文将不会运行

if会输入强制,有时你会想要,有时则不会。例如==1 == "1"。如果要比较类型和内容的字符串(例如,所以字符串只匹配字符串而不是强制转换为字符串的数字),请使用true。 E.g:

===

Live example