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