为什么如果逻辑不能包含未定义
问题描述:
我有以下代码为什么如果逻辑不能包含未定义
if (users[username]["password"] == password) {
console.log("user auth!");
}
因此,如果密码匹配它登录,但不知何故,如果用户名不存在,它会导致users[username]["password"]
为undefined,并打破代码,所以我想知道如何通过false
声明时遇到undefined而不是停止代码?
答
foo = {}
foo.bar // You will get an undefined.
foo.bar.baz // You will get a TypeError if there's no bar in foo.
这是因为JavaScript引擎无法读取未定义的属性。
用foo.bar && foo.bar.baz
代替条件可以解决您的问题。
这样,如果foo.bar
未定义,则当引擎遇到foo.bar
并获得undefined
时,此逻辑表达式的值将设置为undefined
。引擎不会继续尝试获得值foo.bar.baz
。
但是,如果定义了foo.bar
,则引擎将进入并且表达式的值将被正确设置为foo.bar.baz
。
它是JavaScript中逻辑运算符的特征。这里
你可以找到更多的细节 Logical Operators - JavaScript | MDN
'如果(用户[用户名] &&用户[用户名]。密码===密码)' – Li357
是吧'用户[用户名]'或'用户[ '用户名'] '? –
像'if(username in users && users [username] .password === password)'? – Ryan