Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:如何检查对象方法是否有有效结果_Javascript - Fatal编程技术网

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){}未定义怎么办
?使用
if(currentUser&¤tUser.admin){/*…*/}
并为自己保留一些嵌套。@MarkMeyer是的,我曾考虑过,但为了最大限度地提高效率,决定不采用这种方法clarity@MarkMeyer谢谢你的建议-我刚刚扩展了答案,将其包括在内