Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.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是LBYL还是EAFP?_Javascript_Code Structure - Fatal编程技术网

Javascript是LBYL还是EAFP?

Javascript是LBYL还是EAFP?,javascript,code-structure,Javascript,Code Structure,有两种编程方法:EAFP(请求原谅比请求允许更容易)和LBYL(三思而后行)。第一种方法假定做了可能导致异常的事情,然后处理此异常,第二种方法假定使用if语句。那么JavascriptEAFP或LBYL是不是最好的答案,可以很好地总结我的观点,但我将给出我的两个方面 三思而后行 考虑一下这段代码 const thing={}; 试一试{ thing.forestryServices.apply(); } 捕获(e){ 控制台日志(e); } thing.forestryServices={ 申请

有两种编程方法:EAFP(请求原谅比请求允许更容易)和LBYL(三思而后行)。第一种方法假定做了可能导致异常的事情,然后处理此异常,第二种方法假定使用
if
语句。那么JavascriptEAFPLBYL是不是最好的答案,可以很好地总结我的观点,但我将给出我的两个方面

三思而后行

考虑一下这段代码

const thing={};
试一试{
thing.forestryServices.apply();
}
捕获(e){
控制台日志(e);
}
thing.forestryServices={
申请:“惊喜的goombas”
}
试一试{
thing.forestryServices.apply();
}
捕获(e){
控制台日志(e);
}

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

提出的问题毫无意义:JavaScript作为一种编程语言,不是一种编程方法。如何使用JavaScript编程完全取决于您。您可以选择先检查所有内容,也可以选择“做一些事情并捕获抛出的任何异常”。@meriton我问了这个问题,因为许多编程语言都有特定的方法。例如,Python在防御上是EAFP,而C/C++是LBYLNothing,它不阻止JavaScript函数返回特定的错误,调用方可以使用这些错误以特定的方式处理错误。此外,有时错误可以一般地处理,而不需要知道事情到底是如何出错的。Promise和rxjs都支持错误参数是有原因的……当然,但我的代码示例中的错误都是核心JavaScript错误。一个是“未定义上不存在属性apply”,另一个是“apply不是函数”。但两者的数据类型都是Error。