JS에서는 과거에는 Math.floor 메소드를 사용하여 반올림했습니다. 이제 다음과 같은 사용법을 볼 수 있습니다. OR 연산 간격 = 간격 | 0이 사용법은 Math와 유사합니다. 층별 비교, 어떤 장점이 있나요?
认证高级PHP讲师
|은 논리 OR이 아니라 비트 OR(OR)입니다.
|
몇 가지 작은 차이점이 있습니다. 예를 들어 Math.floor(NaN) 还是返回 NaN。但 NaN | 0 返回 0。再比如 Math.floor(Infinity) 返回 Infinity,但 Infinity | 0는 0
Math.floor(NaN)
NaN
NaN | 0
Math.floor(Infinity)
Infinity
Infinity | 0
아직도 할 수 있습니다 interval = interval >> 0
interval = interval >> 0
우선 그 작은 차이에 대해서는 윗층 S1ngS1ng이 맞습니다.
또한 |是位或运算,由于0在内存中存储的时候,是所有的整数位全部被填充了0,所以按二进制位和一个数值进行或运算,对应位上无论是0还是1和0进行或运算,都会得到它本身,但是由于数字0在内存中不存在小数部分,所以位或运算之后interval의 소수 부분은 삭제됩니다. 실제로 소수 부분을 버리면 반올림이 이루어집니다.
0
1
interval
비트 작업이므로 Math.floor()보다 빠릅니다.
Math.floor()
실제 이유는 js 내에서 자동 유형 변환입니다.
js의 값은 모두 64位浮点型表示的。当一个数值需要进行位运算时,js会自动将它转换为32位有符号로 반올림되며 소수점 이하 부분은 버려집니다.
64位
位运算
32位有符号
n|0; n>>0; //다음 0은 n의 정수 값이 변경되지 않도록 하는 데에만 사용됩니다.
64비트에서 32비트로 줄이면 정확도가 떨어집니다. 小心!, 최대 유효 범위: 2^32/2-1
小心!
둘 다 가능해요, interval = interval | 0 这个是一个写作的技巧,看个人爱好吧。可能就是interval = interval | 0这种写法运行会快一点,写代码这个也肯定比Math.floor빨리 쓰세요!
interval = interval | 0
Math.floor
|
은 논리 OR이 아니라 비트 OR(OR)입니다.몇 가지 작은 차이점이 있습니다. 예를 들어
을 반환합니다.Math.floor(NaN)
还是返回NaN
。但NaN | 0
返回 0。再比如
Math.floor(Infinity)
返回Infinity
,但Infinity | 0
는 0아직도 할 수 있습니다
interval = interval >> 0
우선 그 작은 차이에 대해서는 윗층 S1ngS1ng이 맞습니다.
또한
|
是位或运算,由于0
在内存中存储的时候,是所有的整数位全部被填充了0,所以按二进制位和一个数值进行或运算,对应位上无论是0
还是1
和0
进行或运算,都会得到它本身,但是由于数字0在内存中不存在小数部分,所以位或运算之后interval
의 소수 부분은 삭제됩니다. 실제로 소수 부분을 버리면 반올림이 이루어집니다.비트 작업이므로
Math.floor()
보다 빠릅니다.실제 이유는 js 내에서 자동 유형 변환입니다.
js의 값은 모두
64位
浮点型表示的。当一个数值需要进行位运算
时,js会自动将它转换为32位有符号
로 반올림되며 소수점 이하 부분은 버려집니다.n|0; n>>0; //다음 0은 n의 정수 값이 변경되지 않도록 하는 데에만 사용됩니다.
64비트에서 32비트로 줄이면 정확도가 떨어집니다.
으아악小心!
, 최대 유효 범위: 2^32/2-1둘 다 가능해요,
interval = interval | 0
这个是一个写作的技巧,看个人爱好吧。可能就是interval = interval | 0
这种写法运行会快一点,写代码这个也肯定比Math.floor
빨리 쓰세요!