首页 > 解决方案 > 为什么我的“如果条件”会破坏我的代码?

问题描述

我有一个将变量设置为数组中的单词的函数:

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);

这可行,但如果我向第二个函数添加相同的“if”条件,它有时会停止工作:

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/

标签: jqueryfunctionif-statement

解决方案


问题在于这条线

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

只需将其转换为

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

您需要"TEST"作为参数传递,以便您的函数在大小写相同PlacesToVisit2Random的情况下正常工作。PlacesToVisit


推荐阅读