我认为在阅读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");
}
我一定很遗憾/错误地写了这么简单的东西?
答案 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.LOGGEDIN
或theJSON["LOGGEDIN"]
。因为这是一个布尔值typeof(theJSON.LOGGEDIN) == "boolean"
。
表达式是布尔值,但它的值是true
,因此您只需编写if (theJSON.LOGGEDIN)
。