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

时间:2013-06-13 12:15:09

标签: javascript

我认为在阅读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");
}

我一定很遗憾/错误地写了这么简单的东西?

3 个答案:

答案 0 :(得分:2)

您的代码中存在一些错误:

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

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

如果您只想测试该值是否为true,请执行:

if (theJSON['LOGGEDIN'])

w3schools并不是开始学习JavaScript的最佳网站,请查看http://eloquentjavascript.net/MDN JavaScript Guide

答案 1 :(得分:0)

if(typeof(theJSON [“LOGGEDIN]”)== true) 要么 if(typeof(theJSON.LOGGEDIN)== true)

BTW,更好用===而不是==

如果值为1,它仍将通过该条件。

答案 2 :(得分:0)

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

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

表达式是布尔值,但它的true,因此您只需编写if (theJSON.LOGGEDIN)