首页 > 解决方案 > JavaScript - 从对象获取属性,如果未定义则抛出错误

问题描述

我想知道是否有一个标准库或外部库(例如 lodash)函数基本上执行以下操作:

function f(options) {
  const x = options.x;
  if (x === null || x === undefined) throw new Error('x is required option');
  ...
}

我在 lodash 文档中搜索了各种关键词,但还没有找到类似的东西。

标签: javascriptproperties

解决方案


要检查属性是否存在,您可以编写if(x in options)...Libraries exists 来简化繁琐或困难的操作,这是一个非常简单的操作,不需要任何库,而且您不太可能发现它已添加到库中。

虽然.hasOwnProperty() 可以工作,但它只会测试直接附加到问题对象的属性,而该in方法也会测试继承的属性。

但是,要小心抛出错误。出于性能原因,这通常不是您想要做的事情。最好返回代码或消息。

var options = {
  foo:42,
  bar:"doesn't matter"
};

function propTest(propName, obj){
  // Instead of throwing an error, return a value that indicates success or not
  return (propName in obj) ? true : false;
}

console.log(propTest("foo", options));
console.log(propTest("bar", options));
console.log(propTest("baz", options));


推荐阅读