Не понимаю, почему в javascript мой оператор if переходит в неправильную строку

#javascript #logic

#javascript #Логические

Вопрос:

В настоящее время у меня есть оператор if, который проверяет, является ли цель нулевой, и если цель не равна нулю, то для проверки, не является ли цель «select …». Если это не null и ‘select …’, то я хочу, чтобы он выполнил код. Когда я запускаю этот код, он всегда пропускает первую строку тела оператора if и переходит ко второй строке. Я не понимаю, почему. В этом случае он всегда переходит к targetValue = getTargetValue();

 if (target != null amp;amp; !(target.lastIndexOf('select...          ', 0) === 0))
    {
        permalink.href  = "amp;Target="   target;
        targetValue = getTargetValue();
    }
  

Я не уверен, есть ли у меня логическая ошибка или нет. Я использую отладчик firefox, и я прошел через этот код.

Комментарии:

1. Может быть, если вы сделали это: if ((target != null) amp;amp; …

2. @Dean. Сравнения по умолчанию имеют более высокий приоритет, чем логические операторы, это не проблема.

3. В написанном вами коде невозможно permaline.href... пропустить строку и targetValue = ... выполнить строку. Все, что происходит в вашем коде, выглядит только так. В if операторе либо выполняется все тело, либо не выполняется. Добавьте предупреждение или console.log что-нибудь еще, чтобы определить значения ваших выражений и отслеживать выполнение.

4. Нет причин, по которым он должен пропускать первый оператор тела. Он либо выполняет все тело, либо ничего из него.

Ответ №1:

Возможно, проблема связана с lastIndexOf, поскольку он выполняет поиск в обратном направлении от заданного индекса. Итак, в вашем случае вы дали ему 0, что определенно вернет -1

Метод lastIndexOf() возвращает последний индекс, по которому данный элемент может быть найден в массиве, или -1, если он отсутствует. Поиск в массиве выполняется в обратном направлении, начиная с fromIndex .

Попробуйте это без каких-либо аргументов

 if (target != null amp;amp; !(target.lastIndexOf('select...          ') === 0))
    {
        permalink.href  = "amp;Target="   target;
        targetValue = getTargetValue();
    }