JavaScript:如何检查对象方法是否有有效结果
我有一个非常基本的问题,但我找不到任何类似的问题。我有以下代码:JavaScript:如何检查对象方法是否有有效结果,javascript,Javascript,我有一个非常基本的问题,但我找不到任何类似的问题。我有以下代码: var admin_li = helper.h('li', [fpu_link('/admin', 'control', false)]); if (Discourse.User.current().admin) { menu_li.push(admin_li); } 我在DevTools中发现以下错误: Uncaught TypeError: Cannot read property 'admin' of null
var admin_li = helper.h('li', [fpu_link('/admin', 'control', false)]);
if (Discourse.User.current().admin) {
menu_li.push(admin_li);
}
我在DevTools中发现以下错误:
Uncaught TypeError: Cannot read property 'admin' of null
如何检查
if
语句中的discussion.User.current()
是否具有admin
属性/方法?类似于此的内容应该适用于您:
var admin_li = helper.h('li', [fpu_link('/admin', 'control', false)]);
// Get current from user and store in local variable
var currentUser = Discourse.User.current();
if(currentUser !== null && currentUser !== undefined) {
// If currentUser not null and not undefined then it's safe to access
// the admin field
if (currentUser.admin) {
menu_li.push(admin_li);
}
}
或者(正如@MarkMeyer所建议的那样),上面的代码可以用更简洁的速记形式编写,如下所示:
if(currentUser && currentUser.admin) {
// If currentUser is "truthy" (not null, not undefined, etc), and
// currentUser.admin is "truthy", then update menu_li list
menu_li.push(admin_li);
}
请参阅JavaScript中的(和)值可能的重复项,我想我从未见过与属性链接的方法
Distance.User.current().admin
还是Distance.User.currentProp()
还是Distance.User.current('admin')
?@zer00ne如果(document.getElementById('foo').classList.contains('bar')==false){}
未定义怎么办
?使用
并为自己保留一些嵌套。@MarkMeyer是的,我曾考虑过,但为了最大限度地提高效率,决定不采用这种方法clarity@MarkMeyer谢谢你的建议-我刚刚扩展了答案,将其包括在内if(currentUser&¤tUser.admin){/*…*/}