JavaScript:如何检查对象方法是否具有有效结果

时间:2019-06-04 23:47:37

标签: 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

如何在Discourse.User.current()语句中检查admin是否具有if的属性/方法?

1 个答案:

答案 0 :(得分:1)

与此类似的方法应该对您有用:

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中的this more information on the definition of "truthy"(和"falsey")值