Javascript LBYL 还是 EAFP?

Is Javascript LBYL or EAFP?

有两种编程方法:EAFP(请求宽恕比请求许可更容易)和LBYL(三思而后行)。第一种方法假设做一些可能导致异常的事情,然后处理这个异常,第二种方法假设使用 if 语句。 Javascript EAFPLBYL 也是如此吗?

this reddit post 的最佳答案很好地总结了我对此的看法,但我会给出我的 2 位。

三思而后行。

考虑这段代码。

const thing = {};

try {
  thing.forestryServices.apply();
}
catch (e) {
  console.log(e);
}

thing.forestryServices = {
  apply: "surprise goombas"
}

try {
  thing.forestryServices.apply();
}
catch (e) {
  console.log(e);
}

两种情况下返回的错误都是一个Error类型的对象。尝试从这些错误中恢复比提前进行必要的检查以确保您的对象对您尝试对其执行的操作有效要困难得多。