Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
4.0k views
in Technique[技术] by (71.8m points)

求助这段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
    },

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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

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

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

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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...