0

在阅读了 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");
}

我一定是遗漏了/打错了这么简单的东西吗?

4

3 回答 3

2

您的代码中有几处错误:

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

现在,是并且值的类型theJSON['LOGGEDIN']布尔。永远不会为真,因为运算符返回一个带有数据类型名称的字符串,即将返回。truetypeof(theJSON['LOGGEDIN']) == truetypeoftypeof(theJSON['LOGGEDIN]')"boolean"

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

if (theJSON['LOGGEDIN'])

w3schools 确实不是开始学习 JavaScript 的最佳站点,请查看http://eloquentjavascript.net/MDN JavaScript 指南

于 2013-06-13T12:21:12.783 回答
0

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

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

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

于 2013-06-13T12:21:19.633 回答
0

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

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

如果值为数字 1,它仍然会通过条件。

于 2013-06-13T12:18:33.117 回答