javascript - 使函数中需要参数

标签 javascript performance function error-handling parameter-passing

如果函数被调用但缺少正确执行所调用函数所必需的参数,抛出错误是否是一种好习惯?

例如(在 JavaScript 中):

var sayHi = function(name) {
  console.log(name + ' says hi!');
}

对比

var sayHi = function(name) {
  if(!name) { throw new Error('param is missing'); }
  console.log(name + ' says hi!');
}  

对于第二个示例是一个好的编码实践,还是它只是增加了不必要的膨胀,这可能会导致在跨越数十甚至数百个文件的更复杂的程序中经常抛出不必要的错误,是否有强烈的意见?

最佳答案

你可以通过 es6 传递一个立即抛出错误作为默认值的函数来实现这一点

const err = msg => { throw Error( msg ) }

const sayHi = function(name = err('Name is undefined')) {
  console.log(name + ' says hi!');
}

这比在函数体内使用 if 语句具有更好的性能,并且提高了可读性。另一个认为你可以做的是构建一个装饰器来做同样的事情。像这样的东西:

@required( 'name')
const sayHi = function(name = err('Name is undefined')) {
  console.log(name + ' says hi!');
}

正如您在问题Is there a strong opinion 中提到的那样,答案只能是自以为是,所以在我看来,您应该始终有一个错误处理策略。在功能杆或应用程序级别。在我看来,错误处理不太可能成为您的性能瓶颈。

关于javascript - 使函数中需要参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36580129/

相关文章:

javascript - 只计算一次具有更多相等单元格的行

javascript - 自动聚焦下一个输入字段

c# - IIS 高且不稳定的 TTFB

oracle - ORA-03113 : end-of-file on communication channel with CAST MULTISET 的解决方法

function - 将多个值传递给 Snowflake 表函数中的参数

javascript - 我如何居中新的谷歌地图标记

javascript - 当javascript文件全部合并到一个文件中时,它们的顺序是否重要?

c - 为什么在启用 GCC 优化的情况下,这段代码使用 strlen 的速度要慢 6.5 倍?

python - 如何定义一个检查DNA子串的函数?

javascript - 具有动态高度的数据表固定列