Сравнение строк в JavaScript - PullRequest
0 голосов
/ 05 июня 2011

Я пишу расширение 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, тогда как явно не должен?

1 Ответ

3 голосов
/ 05 июня 2011

Последняя строка с URL-адресом должна быть из другого кода, а не из кода в кавычках.

Фактически, этот вывод не соответствует коду вообще. В вашем коде ничто никогда не изменится song или title на всех , поэтому мы должны просто видеть, что одни и те же данные повторяются для столько же перечислимых свойств, сколько есть в newresponse.response (начиная с * 1008). * цикл будет повторяться для такого количества итераций).

Так что я думаю, что ответ здесь: это не так. Вывод, на который вы ссылаетесь, сделан из более раннего запуска с другим кодом или из кода в другом месте на вашей странице и т. Д.

Но для записи, == будет сравнивать строки на равенство, и это будет сделано надежно, поэтому, если вы получите false при ведении журнала, тело оператора if не будет выполнено.

== выполняет принуждение, которое иногда вам нужно, а иногда нет. Например, 1 == "1" - это true. Если вы хотите сравнить строки как по типу, так и по содержимому (например, строка всегда соответствует только строке, а не числу, приведенному в строку), используйте ===. E.g.:

var a, b;

a = 1;
b = "1";

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

Живой пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...