我在 JavaScript 中有一个 if-else 语句,它返回 false,但不执行“else”内的代码。
cshtml 文件内的部分脚本:
if (@Session["mission"].ToString() != "1") {
setInterval(function () { myTimer(ctxPoints, ctxLines); }, 1000 / @ViewBag.rate);
} else {
alert("hi");
}
在调试中,'@Session["mission"].ToString() != "1"' 语句返回 false,但没有任何内容跳转到屏幕。
最佳答案
您应该打开网络浏览器开发者控制台并查看到达浏览器的真实脚本。
Razor 部件,@Session["mission"].ToString()
不存在于浏览器脚本中,因为它们在将它们发送到浏览器之前在服务器中进行评估。所以尝试@Session["mission"].ToString() != "1"
是没有意义的。这在控制台中。在浏览器中你会得到类似以下内容:
if (1 != "1")
甚至喜欢
if ( != "1")
这会引发错误。
JavaScript 会合并,所以 1
等于"1"
当您使用比较器 ==
时或!=
,因此您不需要在值周围包含引号(除非出现上述错误:在这种情况下,如果包含引号,则会得到 if ("" != "1")
)。
使用 !==
可以避免合并或===
这会考虑 1
不等于"1"
,因此,在这种情况下,包含引号没有任何区别。
关于javascript - js不执行 'else'语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56375031/