Javascript 如何为分解不存在的密钥抛出错误
所以我想对一个对象进行解构,如果其中一个键不存在,它就会抛出一个错误。我尝试了一个Javascript 如何为分解不存在的密钥抛出错误,javascript,ecmascript-6,Javascript,Ecmascript 6,所以我想对一个对象进行解构,如果其中一个键不存在,它就会抛出一个错误。我尝试了一个try catch,但没有成功。我想要一个替代方案,而不是仅仅if(variable==undefined) let obj={test:“test”} 试一试{ 设{test,asdf}=obj 控制台日志(“已工作”) } 捕获(错误){ 控制台错误(错误) }try catch用于运行时错误,捕捉您显式抛出的异常或错误。因此,在解构过程中,当找不到匹配的密钥时,不会引发此类错误。要检查是否存在,您需要显式地
try catch
,但没有成功。我想要一个替代方案,而不是仅仅if(variable==undefined)
let obj={test:“test”}
试一试{
设{test,asdf}=obj
控制台日志(“已工作”)
}
捕获(错误){
控制台错误(错误)
}
try catch用于运行时
错误,捕捉您显式抛出的异常或错误。因此,在解构过程中,当找不到匹配的密钥时,不会引发此类错误。要检查是否存在,您需要显式地为其创建一个检查。像这样的,
let obj={test:“test”}
设{test,asdf}=obj
如果(测试){
console.log('worked');
}否则{
console.log(“未工作”);
}
如果(asdf){
console.log('worked');
}否则{
console.log(“未工作”);
}
用于在获取不存在的属性时引发错误
let obj = {
test: "test"
};
try
{
let { test, asdf} = getProxy(obj);
console.log("worked");
}
catch (error)
{
console.error(error)
}
function getProxy(obj) {
return new Proxy(obj, { //create new Proxy object
get: function(obj, prop) { //define get trap
if( prop in obj )
{
return obj[prop];
}
else
{
throw new Error("No such property exists"); //throw error if prop doesn't exists
}
}
});
}
演示
让obj={
测试:“测试”
};
尝试
{
设{test,asdf}=getProxy(obj);
控制台日志(“工作”);
}
捕获(错误)
{
控制台错误(错误)
}
函数getProxy(obj){
返回新代理(obj{
获取:功能(对象、道具){
if(obj中的支柱)
{
返回对象[prop];
}
其他的
{
抛出新错误(“不存在此类属性”);
}
}
});
}
是的,但我确实试图避免all变量===undefined
检查,因为这意味着我必须检查所有变量。@A.Lau确实,是的