js中a||b,a&&b 这种表示啥意思?

if(type){
        options = success
        success = data;
        data = {};
      }

      options = options || {};

      return $.ajax({
        type: options.type || 'post',
        dataType: options.dataType || 'json',
        data: data,
        url: url,
        success: function(res){
          if(res.status === 0) {
            success && success(res);
          } else if(res.status === 2){ //未绑定手机号
            that.setPhoneNotice();
          } else if(res.status === 3){ //未激活邮箱
            that.setEmailNotice();
          } else {
            layer.msg(res.msg || res.code, {shift: 6});
            options.error && options.error();
          }
        }, error: function(e){
          layer.msg('请求异常,请重试', {shift: 6});
          options.error && options.error(e);
        }
      });

有几处写法不太理解,例如这种:options.type || 'post',这是什么用法,像三元又不像。中间一个或。

options.error && options.error(); 还有这种,他是啥意思。

阅读 12.9k
4 个回答

js逻辑运算
JS中的||符号:
运算方法:

 只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。

 只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。

总结:真前假后

2、JS中的&&符号:

运算方法:

 只要“&&”前面是false,无论“&&”后面是true还是false,结果都将返“&&”前面的值;

 只要“&&”前面是true,无论“&&”后面是true还是false,结果都将返“&&”后面的值;
(a || b) === (() => { if (a) {return a;} else {return b} })() === (a ? a : b)

(a && b) === (() => { if (a) {return b;} else {return a} })() === (a ? b : a)

如楼上所说,在你粘贴的代码中作用于默认值填充,判断与你是否传参或者该值是否存在,如果不存在就使用 ||后面的值作为默认值

这个叫短路运算,搜一下有很多解释的,目的就是简化代码

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题