2013-03-25 6 views
-1

У меня есть простой код кода if-else, как показано ниже. Это выглядит просто, но я не могу объяснить его поведение: если блок «else» НЕ включен, тогда всегда используется строка кода (1 *)! Но если я добавлю блок «else», тогда будет нажата строка кода (2 *).if else Выполнение кода кода

var startTime = '11:35 PM'; 
var endTime = '4:40 PM'; 

if (startTime.indexOf('12:') >= 0 && endTime.indexOf('12:') < 0) { 
     return true; // code line (1*) 
} 
else 
{ 
     return false; // code line (2*) 
} 

Спасибо за ваши идеи.

+2

Похоже, что у вас есть 'return true' после if/else – Hogan

+0

Вы должны ошибаться, если вы удаляете блокировку else, функция должна просто возвращать undefined (предполагая, что это от функции, иначе использование return приведет к ошибке). – bfavaretto

+0

Как вы определяете, какая линия попала? Вы уверены, что это не правдивая/ложная проблема? –

ответ

2

Рассмотрим следующую функцию:

function randomName() { 

    var startTime = '11:35 PM'; 
    var endTime = '4:40 PM'; 

    if (startTime.indexOf('12:') >= 0 && endTime.indexOf('12:') < 0) { 
     return true; // code line (1*) 
    } 
    else { 
     return false; // code line (2*) 
    } 

    return true; 
} 

Это экспонировать поведение, которое вы описали. Без остальной части она всегда вернется. Это то, что у вас есть? Если нет, пожалуйста, покажите остальную часть функции. Также полезно было бы увидеть ваш тестовый пример.

Смежные вопросы