更简洁'&&';运算符javascript
我的项目中充斥着以下内容:更简洁'&&';运算符javascript,javascript,Javascript,我的项目中充斥着以下内容: if(selectedDestination.modeOfTransport && selectedDestination.modeOfTransport.value === 'Driving'"){ // Do something } 理想情况下,我只想要: if(selectedDestination.modeOfTransport.value === 'Driving'") 如果没有“modeOfTransport”属性,就让它为假 类
if(selectedDestination.modeOfTransport && selectedDestination.modeOfTransport.value === 'Driving'"){
// Do something
}
理想情况下,我只想要:
if(selectedDestination.modeOfTransport.value === 'Driving'")
如果没有“modeOfTransport”属性,就让它为假 类似的东西应该适合:
(选择了Destination.modeOfTransport | |{})。值==='Driving'
//或者(为了避免原型继承)
(selectedDestination.modeOfTransport | | Object.create(null))。值=='Driving'
如果您正在使用,您可以查看:
selectedDestination.modeOfTransport?.value=='Driving'
Tim的编辑:这里是另一个选项:
这是JavaScript中的一个常见问题。一个逃避的答案可能是定义一个引用了您想要避免的冗长表达式的变量:
var mode = selectedDestination.modeOfTransport;
if (mode && mode.value === 'Driving') {
// Do something
}
这里的打字错误是什么
“驾驶”“
?如何知道传输模式是否未定义?这个问题被问了好几次,据我所知,没有比这更简单的答案了。是的,这似乎是重复的。@Doomenik有一个可能更短的解决方案。为selectedDestination
创建一个包装器,该包装器为给定条件返回一个布尔值。虽然这样做可行,但这不是OP请求的解决方案。他想删除和门以及XOR
以保持逻辑语句的“干净”。如果对象为空,它将如何具有“值”键?@MandeepJain-这就是重点:)-如果selectedDestination.modeOfTransport未定义,则使用未定义的{}.value
,不等于“驾驶”,也不会导致意外事故TypeError@MandeepJaindirty
?@abyrne85