我有一个函数可以解析Google Maps API的地址组件, JSON然后返回城市/地区/路线名称.
该getAddressComponent()回报null,如果它不能找到问题的关键.
let route = getAddressComponent(addressComponents, 'route').value.long_name;
所以,让我们说它没有找到密钥,然后我Error: TypeError: Cannot read property 'long_name' of undefined明显得到了一个,因为它没有定义.
如何null在条件方法以外的javascript中检查(a === null)?
我怎么能这样简单地检查一下 ?
编辑:安全导航操作员
let route = getAddressComponent(addressComponents, 'route')?.value.long_name;
如果它不存在,它可能设置route为null而不是抛出错误?
Gib*_*olt 76
您现在可以直接使用?.内联来测试是否存在。它被称为Optional Chaining Operator,所有现代浏览器都支持。
如果属性存在,则进行下一次检查,或返回值。任何故障都会立即短路并返回undefined。
const example = {a: ["first", {b:3}, false]}
example?.a // ["first", {b:3}, false]
example?.b // undefined
example?.a?.[0] // "first"
example?.a?.[1]?.a // undefined
example?.a?.[1]?.b // 3
domElement?.parentElement?.children?.[3]?.nextElementSibling
Run Code Online (Sandbox Code Playgroud)
为确保默认定义值,您可以使用??. 如果您需要第一个真值,您可以使用||.
example?.c ?? "c" // "c"
example?.c || "c" // "c"
example?.a?.[2] ?? 2 // false
example?.a?.[2] || 2 // 2
Run Code Online (Sandbox Code Playgroud)
如果不检查 case,则 left-side 属性必须存在。如果没有,它会抛出异常。
example?.First // undefined
example?.First.Second // Uncaught TypeError: Cannot read property 'Second' of undefined
Run Code Online (Sandbox Code Playgroud)
?.浏览器支持- 91%,2021 年 8 月
??浏览器支持- 91%
节点支持- v14+
Pac*_*ac0 11
Javascript(EcmaScript 5或6)中没有"零安全导航操作符",比如?.C#,Angular模板等(有时也称为Elvis操作符?:),至少还不幸.
您可以使用三元运算符null在一行中测试并返回一些依赖表达式,如其他答案中所述: ?:
(用于=== null仅检查nulls值,并== null检查null 和 undefined)
console.log(myVar == null ? myVar.myProp : 'fallBackValue');
Run Code Online (Sandbox Code Playgroud)在某些情况下,和你的一样,当你的变量应该持有时object,你可以简单地使用这样一个事实:任何对象都是 真实的,null而且undefined是假的值:
if (myVar)
console.log(myVar.myProp)
else
console.log('fallbackValue')
Run Code Online (Sandbox Code Playgroud)
您可以通过合并到布尔值来测试伪值,!!并使其内联:
console.log(!!myVar ? myVar.myProp : 'fallbackValue');
Run Code Online (Sandbox Code Playgroud)
要非常小心,虽然这个"falsy测试",对于如果你的变量0,''或者NaN,那么它是falsy为好,即使它不是空/未定义.
let component = getAddressComponent(addressComponents, 'route');
let route = component ? component : null
Run Code Online (Sandbox Code Playgroud)
您可以使用?运算符检查该值true,或者false 然后在 javascript 中设置该null值false
| 归档时间: |
|
| 查看次数: |
17368 次 |
| 最近记录: |