javascript - JavaScript - 从对象获取属性,如果未定义则抛出错误
问题描述
我想知道是否有一个标准库或外部库(例如 lodash)函数基本上执行以下操作:
function f(options) {
const x = options.x;
if (x === null || x === undefined) throw new Error('x is required option');
...
}
我在 lodash 文档中搜索了各种关键词,但还没有找到类似的东西。
解决方案
要检查属性是否存在,您可以编写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));
推荐阅读
- python - Python 版本冲突和符号链接
- knn - 使用 MFCC 进行婴儿哭泣检测和使用 KNN 分类器进行哭泣原因
- ubuntu - dotnet core 2.1 应用程序的最大进程地址空间是多少?
- git - Jenkins - Bitbucket 拉取请求构建器未按预期工作
- c++ - 编译时错误:Union 默认构造函数被删除
- mongodb - 解释为什么在 upsert 上重复输入
- php - 无法使用phpspreadsheet下载excel文件
- google-chrome-extension - 运行 contextMenus.create 时未选中 runtime.lastError:无法创建具有重复 ID 的项目
- javascript - 在laravel中使用ajax将多个数组发送到控制器
- python - Python Firebase Admin 监听器每小时自动触发一次