Javascript 未定义值处理:代理与原始布尔值
在我的新项目中指定一种处理未定义值的方法让我感到困惑。 最近,我遇到了代理概念,这使我能够执行以下操作:Javascript 未定义值处理:代理与原始布尔值,javascript,proxy,Javascript,Proxy,在我的新项目中指定一种处理未定义值的方法让我感到困惑。 最近,我遇到了代理概念,这使我能够执行以下操作: const handler = { get: (obj, prop) => (prop in obj ? obj[prop] : 210)}; const p = new Proxy({'80mm' : 80, '210mm': 210}, handler); console.log('50mm' in p, p.c) // false, 210 另一方面,它可能只是: cons
const handler = { get: (obj, prop) => (prop in obj ? obj[prop] : 210)};
const p = new Proxy({'80mm' : 80, '210mm': 210}, handler);
console.log('50mm' in p, p.c)
// false, 210
另一方面,它可能只是:
const options = {'80mm' : 80, '210mm': 210 };
console.log(options['50mm'] || 210)
// 210
哪一个是最好的选择
非常感谢。逻辑运算符比代理便宜得多。它也更加地道。只有在无法控制访问属性的代码时,才需要代理
然而,我建议第三种选择:明确地写出来
console.log('50mm' in options ? options['50mm'] : 210)
// or
console.log(typeof options['50mm'] == "number" ? options['50mm'] : 210)
即使选项对象包含错误的值0,或者键是hasOwnProperty之类的奇怪值,这也会起作用。原始布尔值是什么意思?您好!对不起,也许我的句子不够清楚。对于本例,只需简单地提及| |和&。谢谢!你的建议让我明白了。