2017-09-23 36 views
0

类似的问题:Java: check for null or allow exception handling检查null或undefined VS处理错误VS返回假的JS在Java中

相关:How to deep check for "null" or "undefined" with JS?

假设a.foo()是一个屡试不爽的函数,返回要么

undefined或具有功能的对象如{bar:()=>log('baz')},

因此,编写

似乎是合乎逻辑的

a.foo().bar()

这显然不起作用。

(所述undefined是一个空return;的结果,当没有信息可以被递送)

应该

1.操作被尝试,

try{a.foo().bar();}catch(e){}

2 。一个新变量被宣布为

const u = a.foo(); 
if(u) u.bar(); 

3或foo()返回{bar:()=>{}}代替undefined

使

a.foo().bar(); 

可以正常写的?

什么是行业标准?什么是最快的?

+0

这是做什么个人意见的结果,没有正确的答案。 – epascarello

+0

什么是行业标准?什么是最快的? – guest

+0

没有标准。我可以告诉你,没有人会使用try catch – epascarello

回答

0

正如已经评价说,这是个人意见,我也会坚持下去,大多数人会尽量避免在try-catch故事...

但无论如何,我想补充一点,你也可以简单地检查:

a.foo() && a.foo().bar() 

万一a.foo()将返回undefined,则右侧不会被执行,因此该表达式返回未定义。

另一方面,如果a.foo()undefined比右侧将被执行,该表达式会的a.foo().bar()

+0

但这很糟糕,因为你正在调用该方法两次。如果它很贵,这不是明智的。如果它只是一个静态属性,那是一种做到这一点的方法。 – epascarello

+0

在这种情况下,只需将'a.foo()'赋值给变量并用变量名称替换'a.foo()'。比起你试图抓住一次的方式来说它只是一次 – Kristianmitk