https://github.com/lapwinglabs/x-ray/blob/master/lib/utils/absolute-urls.js#L41
这里面看到的,google也找不到,多谢各位
这里面看到的,google也找不到,多谢各位
|
1
按位取补
二进制:~01011010=10100101 一般情况下(有符号补码):~a + 1 = -a 那句话换成人话:if (src.indexOf('://') < 1) { |
|
2
二进制 非 Bitwise NOT
~-1 -> 0 所以相当于 if (~src.indexOf('://')) -> if (src.indexOf('://') !== -1) https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_NOT |
|
3
@ffffwh 你的意思是对的 但是最后那个不对
if (~src.indexOf('://')) 相当于 if (~src.indexOf('://') != 0/null/NaN/...) 相当于 if (src.indexOf('://') !== -1) |
|
4
按位取反,和C一样
|
|
ozkingFeb 9, 2015 via iPhone
6
~哦~
|
|
7
@ffffwh 不是哦 JS 里面 if 非0 (或者和0等价的null undefined NaN) 就相当于 true 不一定是1
其实大家在用的时候并不一定是给bool 不过因此确实比较容易出bug indexOf 正常返回 >=0 找不到返回 -1 所以必须判断是否是-1 而不是 0 或者 1 而刚好 ~-1 === 0 算是一个小技巧吧 其实在团队中不太推荐用 因为会有人看不懂 另外一个类似的用法是 ~~float 或者 float | 0 相当于 Math.floor(float) |
|
linzyFeb 9, 2015
9
醉了
|
|
FrankFang128Feb 9, 2015
10
这么写代码真是2
|
|
yellowV2exFeb 9, 2015
11
我很认真的问一下,如果我这么写到代码里,if (~src.indexOf('://')) {
那么看到的人会以为我很牛逼还是很装逼? |
|
iyaozhenFeb 9, 2015
12
@yellowV2ex 感觉这样更简洁。src.indexOf('://') !== -1 太长了
|