我正在撰写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
语句结果为真,显然不应该?
答案 0 :(得分:3)
带URL的最后一行必须来自其他代码,而不是来自引用代码。
实际上,该输出与代码完全不匹配。在您的代码中,一切都没有变更song
或title
,所以我们应该只看到为{{1}中的可枚举属性重复相同的数据(因为newresponse.response
循环将重复多次迭代)。
所以我认为这里的答案是:事实并非如此。您引用的输出来自早期使用不同代码的运行,或来自页面中其他位置的代码等。
但是对于记录,for
将比较字符串的相等性,并且它将可靠地进行比较,因此如果在记录时得到==
,则false
语句的正文将不会运行
if
会输入强制,有时你会想要,有时则不会。例如==
是1 == "1"
。如果要比较类型和内容的字符串(例如,所以字符串只匹配字符串而不是强制转换为字符串的数字),请使用true
。 E.g:
===