比较JavaScript中的字符串

比较JavaScript中的字符串,javascript,string,Javascript,String,我正在编写一个Chrome扩展,其中的一部分,它会根据JSON文件检查查询。出于某种原因,当我使用==比较查询和JSON数据时,我总是得到奇怪的结果 代码如下: for(audio in newresponse.response) { console.log(song + " " + title); console.log(song == title); if(song == title) {

我正在编写一个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语句的结果是true,而它显然不应该是true?

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

事实上,该输出与代码根本不匹配。在您的代码中,没有任何内容会改变歌曲或标题,因此我们应该看到相同的数据重复出现在newresponse.response中的可枚举属性中,因为for循环将重复这么多次迭代

所以我认为答案是:不是。您所指的输出来自先前使用不同代码运行的代码,或者来自页面中其他位置的代码,等等

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

==执行类型强制,有时需要,有时不需要。例如,1==1是真的。如果要比较字符串的类型和内容,例如,一个字符串只匹配一个字符串,而不是强制转换为字符串的数字,请使用==。例如:


好极了@T.J.,这段代码显然不是产生输出的代码。。。
var a, b;

a = 1;
b = "1";

display("a == b? " + (a == b));   // true
display("a === b? " + (a === b)); // false