求助这段js代码怎么理解? 初学者看不懂

geth: function(a) {
        var b = 0;
        return a || (a = 0),
        get("header_title") && (b += 50),
        get("footerdiv") && (b += 55),
        $(window).height() - b + a
    },

主要是return 这里不太理解,而且后面都是,号

geth: function(a) {
        var b = 0;
        return a || (a = 0), //这里不理解
        if(get("header_title"))b += 50,//这样理解对不对
        if(get("footerdiv"))b += 55,//这样理解对不对
        $(window).height() - b + a
    },
阅读 1.7k
2 个回答

第二、三个理解都是对的,是利用了 JS 逻辑运算的 短路计算 特性。

关于第一个,其实里面的 return 后面的代码等价于:

// ...
a || (a = 0);
get("header_title") && (b += 50);
get("footerdiv") && (b += 55);
return $(window).height() - b + a

逗号在这里表示语句还没有完成,需要继续执行直到最后一个逗号后面的表达式,于是乎return 的是最后一个表达式得到的值。

顺便问一下,

a || (a = 0);

是不是

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