Почему мое «если условие» портит мой код? - PullRequest
0 голосов
/ 27 июня 2018

У меня есть функция, которая устанавливает переменную в слово из массива:

function PlacesToVisitSelector(var1) {
    if ( (var1 == 'TEST')){
        var PlacesToVisit =['kilopascal','psi','Torr'];
        var PlacesToVisitRandom= PlacesToVisit[Math.floor(Math.random() * PlacesToVisit.length)];
        return PlacesToVisitRandom;
    }

}

var PlacesToVisit = PlacesToVisitSelector("TEST");
$('.PlacesToVisit').html(PlacesToVisit);

И еще одна функция, которая устанавливает вторую переменную для слова из того же массива, который отличается от исходного слова:

function PlacesToVisit2Selector(var1) {
    var PlacesToVisit2 =['kilopascal','psi','Torr'];
    var PlacesToVisit2Random= PlacesToVisit2[Math.floor(Math.random() * PlacesToVisit2.length)];
    return (PlacesToVisit2Random !== PlacesToVisit) ? PlacesToVisit2Random: PlacesToVisit2Selector();
}

var PlacesToVisit2 = PlacesToVisit2Selector("TEST");
$('.PlacesToVisit2').html(PlacesToVisit2);

Это работает, но если я добавлю то же условие "если" во вторую функцию, оно иногда перестает работать:

function PlacesToVisit2Selector(var1) {
    if ( (var1 == 'TEST')){ 
        var PlacesToVisit2 =['kilopascal','psi','Torr'];
        var PlacesToVisit2Random= PlacesToVisit2[Math.floor(Math.random() * PlacesToVisit2.length)];
        return (PlacesToVisit2Random !== PlacesToVisit) ? PlacesToVisit2Random: PlacesToVisit2Selector();
    }
}

var PlacesToVisit2 = PlacesToVisit2Selector("TEST");
$('.PlacesToVisit2').html(PlacesToVisit2);

Я в замешательстве, так как я использовал эти функции десятки раз и никогда не испытывал никаких проблем. Чего мне не хватает?!

JSFiddle, показывающий, что функции время от времени работают только с условием if во второй функции: http://jsfiddle.net/1z7fqL0a/

1 Ответ

0 голосов
/ 27 июня 2018

Проблема с этой строкой

 return (PlacesToVisit2Random !== PlacesToVisit) ? PlacesToVisit2Random: PlacesToVisit2Selector();

Просто конвертируйте его в

return (PlacesToVisit2Random !== PlacesToVisit) ? PlacesToVisit2Random: PlacesToVisit2Selector("TEST");

Вам нужно передать "TEST" в качестве аргумента, чтобы ваша функция работала правильно, если PlacesToVisit2Random и PlacesToVisit совпадают.

...