即使它应该进入循环也不会

时间:2017-02-24 13:24:13

标签: javascript

我在javascript中遇到循环问题 我突然遇到一个奇怪的问题,即使看起来应该触发某些值,我的循环也不会触发。

var j = holiday_starts;

console.log(j);
console.log(holiday_ends);

if (j<=holiday_ends){
    console.log("TRUE");
}

在这种情况下,holiday_starts为6,holiday_ends为10(使用控制台日志检查)。这不是记录TRUE。它只发生在某些情况下,而不是其他情况。

如果我直接设置变量(j = 6, holiday_ends = 10),那么它将记录为TRUE。

我错过了什么?这是由于我的代码中的其他地方吗?

4 个答案:

答案 0 :(得分:1)

您正在比较字符串而不是整数。所以在比较之前只需转换为整数类型。

像这样:

def render_template(self, *args, **kwargs):
    # Provide i18n support even if flask-babel is not installed
    # or enabled.
    kwargs['gettext'] = gettext
    kwargs['ngettext'] = ngettext
    kwargs['_'] = _
    return render_template(*args, **kwargs)

答案 1 :(得分:1)

我怀疑你将holiday_starts和holiday_ends作为 string (可能来自用户输入?)。当发生这种情况时,比较结果为字符串,6表示字母表中的1,&#34; 6&#34; &LT; &#34; 10&#34;是假的,就像在这个片段中一样:

&#13;
&#13;
var holiday_starts = "6";
var holiday_ends = "10";
var j = holiday_starts;

console.log(j);
console.log(holiday_ends);

if (j<=holiday_ends){
    console.log("TRUE");
}
&#13;
&#13;
&#13;

在这种情况下,您应该在比较前parseInt输入,下面的代码段按预期工作:

&#13;
&#13;
var holiday_starts = parseInt("6");
var holiday_ends = parseInt("10");
var j = holiday_starts;

console.log(j);
console.log(holiday_ends);

if (j <= holiday_ends) {
  console.log("TRUE");
}
&#13;
&#13;
&#13;

答案 2 :(得分:1)

它们按字母顺序进行比较,因为它假设它们是String。

使用Number()parsInt()将其明确转换为数字。然后你会得到正确答案

答案 3 :(得分:0)

其中一个变量可能包含字符串值。

通过typeof关键字检查:

var j = holiday_starts;

console.log(j);
console.log(holiday_ends);

if (j<=holiday_ends){
    console.log("TRUE");
}
else {
    console.log("Type of j:" + (typeof j) + " // Type of holiday_ends:" + (typeof holiday_ends));
}

并相应地修复