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确实,是的