首页 > 解决方案 > 什么是|| 在这段代码中做什么?这段代码的目的类似于 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!")
            })
        }
    }, {

标签: javascript

解决方案


与运算符||一起被称为短路运算符&&

使用 时||,只有在第一个表达式产生假值后才会计算第二个表达式。假设我们在下面有这些代码:

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 0or falseor等​​),它将undefined返回,否则将返回result.err

&&可以像 的反转版本一样工作||:只有在第一个表达式得到真值之后,才会计算第二个表达式。

我个人不建议使用它来代替if语句,因为它可能会降低代码的可读性。


推荐阅读