这段js是啥意思,没看太懂。。。

刘正权 2016-05-10 01:37:24

最近在做爬虫,遇到一段看似比较简单的js,却看不明白return里面是啥意思。
js如下:
function nbits(a) {
var b, c = 1;

return
0 != (b = a >>> 16) && (a = b,c += 16),
0 != (b = a >> 8) && (a = b,c += 8),
0 != (b = a >> 4) && (a = b,c += 4),
0 != (b = a >> 2) && (a = b,c += 2),
0 != (b = a >> 1) && (a = b,c += 1),
c
}

...全文
118 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
刘正权 2016-05-10
  • 打赏
  • 举报
回复
引用 1 楼 showbo 的回复:
http://www.cnblogs.com/qiuh/archive/2013/03/15/2960857.html 移位运算和逗号运算符,其他对a,b,c进行赋值运运算,最后返回c的值。等价于下面的
   function nbits(a) {
        var b, c = 1;
        b = a >>> 16;
        if (0 != b) { a = b, c += 16 }
        b = a >> 8;
        if (0 != b) { a = b, c += 8 }
        b = a >> 4
        if (0 != b) { a = b, c += 4 }
        b = a >> 2
        if (0 != b) { a = b, c += 2 }
        b = a >> 1
        if (0 != b) { a = b, c += 1 }

        return c;
    }
非常感谢 我已经试过了,而且我认为你分析的也是正确的。 不过我感觉,他写的这个更加高效,使用 && 代替了if判断。我基本上明白怎么回事儿了,非常感谢。
Go 旅城通票 2016-05-10
  • 打赏
  • 举报
回复
http://www.cnblogs.com/qiuh/archive/2013/03/15/2960857.html 移位运算和逗号运算符,其他对a,b,c进行赋值运运算,最后返回c的值。等价于下面的
   function nbits(a) {
        var b, c = 1;
        b = a >>> 16;
        if (0 != b) { a = b, c += 16 }
        b = a >> 8;
        if (0 != b) { a = b, c += 8 }
        b = a >> 4
        if (0 != b) { a = b, c += 4 }
        b = a >> 2
        if (0 != b) { a = b, c += 2 }
        b = a >> 1
        if (0 != b) { a = b, c += 1 }

        return c;
    }

87,902

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧