根据变量对象是否等于"true"输出内容



我认为这将是直接通过阅读w3c教程等!但我似乎有一些不正确的代码不输出任何东西!

根据用户是否登录设置该变量:

var theJSON={"LOGGEDIN":false};
var theJSON={"LOGGEDIN":true};

然后我试图在前端显示用户是否登录:

$(document).ready(function() {
if (typeof(theJSON[LOGGEDIN]) == true ) {
document.write ("Logged in")
} else {
document.write ("Not logged in");
}

我一定是丢失了/打错了这么简单的东西?

您的代码中有几处错误:

当您尝试访问对象的LOGGEDIN属性时,您缺少引号。表达式theJSON[LOGGEDIN]将首先尝试获取变量 LOGGEDIN的值,以使用其值作为属性名。如果这样的变量不存在(就像在您的示例中一样),代码将抛出一个错误。

现在,theJSON['LOGGEDIN']true,该值的类型布尔值typeof(theJSON['LOGGEDIN']) == true永远不会为真,因为typeof操作符返回一个带有数据类型名称的字符串,即typeof(theJSON['LOGGEDIN]')将返回"boolean"

如果你只想测试值是否为真,执行:

if (theJSON['LOGGEDIN'])

w3schools真的不是开始学习JavaScript的最佳网站,可以看看http://eloquentjavascript.net/和MDN JavaScript指南。

if (typeof(theJSON["LOGGEDIN]") == true)或if (typeof(theJSON.LOGGEDIN) == true)

顺便说一句,最好使用===而不是==

如果值是1,它仍然会通过条件

首先,您的theJSON是给定的实际对象,而不是JSON字符串。如果是,您需要按照建议解析它。

表达式theJSON[LOGGEDIN]语法错误,您可以说theJSON.LOGGEDINtheJSON["LOGGEDIN"]。因为这是一个布尔值,typeof(theJSON.LOGGEDIN) == "boolean" .

表达式是一个布尔值,但是它的true,所以你可以直接写if (theJSON.LOGGEDIN)

最新更新