【发布时间】:2020-06-24 08:01:45
【问题描述】:
我必须得到一个内部组件的值。仅出于性能比较时,哪个更好 1 或 2,此方法被多次调用。 foo 可能为 null,具体取决于运行时,但 foo 可能有值,但 bar 可能为 null 等。这不是错误情况或者 foo、bar、innerfoo、innerbar 中的任何一个为 null 的意外情况,它们中的任何一个在运行时都可以为 null,具体取决于层次结构。但是 innerbar 不能有 if foo 为 null 的任何值,因此如果 foo 未定义,则无需检查内部组件。
//1
function getInnerValue() {
if (foo && foo.bar && foo.bar.innerfoo && foo.bar.innerfoo && foo.bar.innerfoo.innerbar) {
return foo.bar.innerfoo.innerbar.x;
}
return 0;
}
//2
function getInnerValue() {
try {
return foo.bar.innerfoo.innerbar.x;
}
catch (e) {
return 0;
}
}
【问题讨论】:
-
我看到 stackoverflow.com/questions/3217294/… 和 stackoverflow.com/questions/3223730/… 并认为使用 if 似乎更好?
-
任何带有 try catch 的东西都会导致性能大幅下降(如果它被触发的话)
标签: javascript performance null try-catch undefined