关于按位非操作符(~)的问题?
发布于 9 年前 作者 QuoniamYIF 4597 次预览 最后一次回复是 9 年前 来自 问答
今天在看vue-hackernews的源代码,发现这样一段代码:
export function fromNow (time) {
const between = Date.now() / 1000 - Number(time)
if (between < 3600) {
return pluralize(~~(between / 60), ' minute')
} else if (between < 86400) {
return pluralize(~~(between / 3600), ' hour')
} else {
return pluralize(~~(between / 86400), ' day')
}
}
function pluralize(time, label) {
if (time === 1) {
return time + label
}
return time + label + 's';
}
其中~~(between / 60),不明白为什么要这样写?
对任一数值 x 进行按位非操作的结果为 -(x + 1),那~~x的结果是-(-(x+1)+1),结果还是x,那为什么还要在前面加上~~呢?
4 回复
~~,两次取反可以去除(between/60)的小数位,相当于取整
测试评论
测试
看了1楼的回复,我查了一下,这个应该可以帮到上你