javascript - 什么是|| 在这段代码中做什么?这段代码的目的类似于 C 中的 switch(condition)?
问题描述
请告诉我这段代码在做什么?这些键是否试图模仿 C 中的 Switch(Condition) 语法?我认为|| 或者运算符不只是比较左右并返回 T 或 F,如果它是真的,它返回左,如果它是假的,我猜?!
g = (a = Object(d.b)("scheduleStore", "userStore"))(u = Object(d.c)(u = function (e) {
function t(e) {
r(this, t);
var n = i(this, (t.__proto__ || Object.getPrototypeOf(t)).call(this, e));
return n.state = {
status: {}
}, n
}
return o(t, e), _(t, [{
{
key: "onBook",
value: function (e) {
var t = this.props.scheduleStore;
t.booking || (e.driver_id && (alert("This assignment has been booked. Reloading the page!"), window.location.reload()), t.bookAssignment(e.id).then(function (e) {
null === e || "error" === e.status || e.status
}))
}
}, {
key: "onUnBook",
value: function (e) {
this.props.scheduleStore.unbookAssignment(e.id).then(function (e) {
e || alert("Error while cancel the reservation. Reload page!")
})
}
}, {
解决方案
与运算符||
一起被称为短路运算符。&&
使用 时||
,只有在第一个表达式产生假值后才会计算第二个表达式。假设我们在下面有这些代码:
let a = 1
let b = 2
a == 1 || console.log('A is not 1')
b == 1 || console.log('B is not 1')
B is not 1
将被记录到控制台。
此外,||
如果它是真的,将返回前一个(左手)表达式的结果;否则它将返回后一个的结果。因此,如果我们写:
result.err || result.data
result.data
如果result.err
是 falsy(is 0
or false
or等),它将undefined
返回,否则将返回result.err
。
&&
可以像 的反转版本一样工作||
:只有在第一个表达式得到真值之后,才会计算第二个表达式。
我个人不建议使用它来代替
if
语句,因为它可能会降低代码的可读性。
推荐阅读
- python - Python - 从未检索到任务异常 & AttributeError: __aexit__
- azure - Azcopy 将数百万个小 Blob 从存储帐户复制到您的 VM
- ios - 如何在 Xcode 中用 Swift 语言实现浏览器中例行任务的自动化?
- java - 未返回与签名 jwt 令牌中的声明相同的到期日期
- git - 另一个 GitHub 帐户错误地推送到 GitHub
- php - php finfo 将 php 文件检测为 jpeg
- windows - makefile "C:\Program" 不被识别为内部或外部命令
- laravel - Laravel 8 社交名流登录重定向问题
- ffmpeg - FFMpeg - 将第一帧冻结 X 秒
- mysql - 如何在 mySQL Workbench 上添加完整性检查