javascript - js不执行 'else'语句

标签 javascript c# asp.net-mvc

我在 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/

相关文章:

javascript - 在没有 POST 的情况下处理 Remix.run 中的操作

c# - 无法使用 Autofac 将 ILogger 注入(inject)类

c# - 用于实现静态方法的静态字典字段

c# - WPF:是否有资源更改触发的事件

asp.net-mvc - 将客户端验证设置为德语

html - CSS 未在 IIS 服务器中呈现

javascript - 下面有比赛条件吗?

javascript - 如何验证 Ajax 的 dojo javascript 表单?

c# - M、MVC 中有多少逻辑?

javascript - 结合正则表达式多个不同的字母字符