1
ffffwh 2015-02-09 08:57:45 +08:00 1
按位取补
二进制:~01011010=10100101 一般情况下(有符号补码):~a + 1 = -a 那句话换成人话:if (src.indexOf('://') < 1) { |
2
yyfearth 2015-02-09 09:00:55 +08:00 1
二进制 非 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
yyfearth 2015-02-09 09:05:35 +08:00 1
@ffffwh 你的意思是对的 但是最后那个不对
if (~src.indexOf('://')) 相当于 if (~src.indexOf('://') != 0/null/NaN/...) 相当于 if (src.indexOf('://') !== -1) |
4
tabris17 2015-02-09 09:08:14 +08:00 1
按位取反,和C一样
|
6
xudshen 2015-02-09 09:12:36 +08:00 via iPhone
~哦~
|
7
yyfearth 2015-02-09 09:22:07 +08:00 1
@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) |
9
linzy 2015-02-09 10:00:25 +08:00
醉了
|
10
FrankFang128 2015-02-09 13:06:54 +08:00
这么写代码真是2
|
11
yellowV2ex 2015-02-09 13:18:19 +08:00
我很认真的问一下,如果我这么写到代码里,if (~src.indexOf('://')) {
那么看到的人会以为我很牛逼还是很装逼? |
12
iyaozhen 2015-02-09 13:45:28 +08:00
@yellowV2ex 感觉这样更简洁。src.indexOf('://') !== -1 太长了
|