84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
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
빨리 쓰세요!