我在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。
我错过了什么?这是由于我的代码中的其他地方吗?
答案 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;是假的,就像在这个片段中一样:
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;
在这种情况下,您应该在比较前parseInt
输入,下面的代码段按预期工作:
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;
答案 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));
}
并相应地修复