Javascript 根据变量对象是否等于";输出内容;“真的”;

Javascript 根据变量对象是否等于";输出内容;“真的”;,javascript,Javascript,在阅读了w3c教程等之后,我认为这将是直截了当的!但是我似乎有一些不正确的地方,因为代码没有输出任何东西 变量根据用户是否登录进行设置: var theJSON={"LOGGEDIN":false}; var theJSON={"LOGGEDIN":true}; $(document).ready(function() { if (typeof(theJSON[LOGGEDIN]) == true ) { document.write ("Logged in") } else { d

在阅读了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");
}
然后,我尝试在前端显示用户是否登录:

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");
}
我一定是错过了/打错了这么简单的东西?

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

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


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

代码中有几处错误:

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

现在,JSON['LOGGEDIN']的值是
true
,值的类型是布尔值
typeof(JSON['LOGGEDIN'])==true
永远不会为true,因为
typeof
运算符返回一个带有数据类型名称的字符串,即
typeof(JSON['LOGGEDIN]')
将返回
“boolean”

如果您只想测试该值是否为真,请执行以下操作:

if (theJSON['LOGGEDIN'])


w3schools并不是开始学习JavaScript的最佳站点,请看一看,取而代之的是。

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

表达式
theJSON[LOGGEDIN]
的语法不正确,您可以说
theJSON.LOGGEDIN
theJSON[“LOGGEDIN”]
。由于这是一个布尔值,
typeof(theJSON.LOGGEDIN)==“boolean”


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

为什么不直接使用
if(theJSON.LOGGEDIN)
?这取决于值是否应该是bool,如果(theJSON.LOGGEDIN)不合适@GerardWesterhof这将始终是
false
typeof
返回一个字符串,而不是布尔值。仅供参考,这个问题与JSON无关。JSON是一种数据交换格式,如XML、CSV或YAML<代码>var theJSON={“LOGGEDIN”:true}是一个对象文本,我将脚本更新为上面建议的版本,但只是返回空白。其他地方肯定有问题,脚本只是检测“LOGGEDIN”是否设置为true或false。登录状态是在一个单独的ajax脚本中设置的。问题可能是您的其他脚本或您正在使用
document.write
。没有更多的信息是不可能说出来的。逻辑本身运行良好:。感谢您的帮助Felix,我可以看到该脚本在JSFIDLE上运行得非常完美,我将深入研究另一个脚本,看看是否存在错误。我基本上在我的标题中有这个链接:urlhere/index.cfm?go=cAjax.getUserStatus“>当我转到url时,它显示的是变量theJSON={“LOGGEDIN”:false};没问题。奇怪!FWIW,这不是Ajax。你只是包含了另一个JavaScipt脚本。不过它应该仍然可以工作。”调试“整个应用程序或进程无法通过堆栈溢出工作。