티스토리 뷰
비트 및 ( )를 포함한 모든 비트 연산자 1&
은 32 비트 정수로 작동합니다.
이 연산자는 추상 ToInt32
연산 2를 사용하여 두 피연산자를 부호있는 32 비트 정수로 변환하고 값이 숫자가 아닌 경우이 변환의 결과는 0
입니다.
마지막에 표현식은 다음과 같이 평가됩니다.
0 & 0; // 0
참조 :
이진 비트 연산자 ECMA-262, 3rd. Ed. 섹션 11.10
ToInt32
, ECMA-262 , 섹션 9.5
& 는 비트 AND 연산자입니다 ( 논리 AND 연산자 인 && 와 반대 ). 비트 및 문자열에는 의미가 없으므로 JavaScript가 쉬운 방법을 사용하고 0을 반환한다고 가정합니다.
좀 더 기술적 인 설명이있을 수 있지만 기본적으로 당신은 무의미한 지시를하고 무의미한 결과를 얻었습니다. 오류가 발생하면 더 좋았을 텐데 JavaScript는 그런 언어가 아닙니다!
-------------------많은 언어와 마찬가지로 JavaScript에는 비트 연산자가 있습니다. & 이것은 유사한 위치의 비트를 비교하고 둘 중 하나가 0- 인 위치에서 1 비트와 0 비트가있는 위치에서 1 비트를 반환합니다. 비트.
그리고 0을 반환하는 중요한 이유는 일치하는 비트가 없기 때문이 아니라 문자열을 지원하지 않기 때문입니다. :)
-------------------그것은 비트 및 인수를 숫자로 캐스팅합니다. 임의의 문자열을 숫자로 캐스트하고 해당 문자열에 숫자 텍스트가 포함되지 않은 경우 결과는 NaN입니다.
어떤 이유로 NaN & NaN의 결과는 0입니다.
"2"및 "3"시도
출처
https://stackoverflow.com/questions/1905040
댓글