JavaScript에서 &와 &&의 차이점은 무엇입니까?
JavaScript에서 &와 &&의 차이점은 무엇입니까?
예제 코드 :
var first = 123;
var second = false;
var third = 456;
var fourth = "abc";
var fifth = true;
alert(first & second); // 0
alert(first & third); // 72
alert(first & fourth); // 0
alert(first & fifth); // 1
alert(first && second); // false
alert(first && third); // 456
alert(first && fourth); // abc
alert(first && fifth); // true
&&는 둘 다 참이면 항상 두 번째 값을 제공하는 논리적 "and"인 것 같습니다.
그러나 &는 무엇입니까?
(그런데, &&는 파이썬에서 "and"인 것 같고, &는 파이썬에서 & 인 것 같습니다.)
&
비트 AND
이 연산자는 두 개의 숫자를 예상하고 숫자 를 반환합니다 . 숫자가 아닌 경우 숫자로 캐스트됩니다.
어떻게 작동합니까? Wikipedia에 답변이 있습니다 : https://en.wikipedia.org/wiki/Bitwise_operation#AND
참고 : Javascript에서는 정수 데이터 유형이없고 부동 소수점 만 있기 때문에이 연산자를 사용 하지 않는 것이 좋습니다 . 따라서 부동 소수점은 모든 작업 전에 정수로 변환되어 속도가 느려집니다. 또한 일반적인 웹 응용 프로그램에서는 실제로 사용되지 않으며 읽을 수없는 코드를 생성합니다.
일반 규칙 : 피하십시오. 그것을 사용하지 마십시오. 유지 관리가 가능하고 읽기 쉬운 JS 코드에는 거의 없습니다.
&&
논리적 AND
두 개의 인수를 예상하고 다음을 반환합니다.
- 거짓으로 평가되는 첫 번째 용어
- 그렇지 않으면 마지막 용어 (모두 true-y 인 경우)
여기 예시들이 있습니다 :
0 && false 0 (both are false-y, but 0 is the first)
true && false false (second one is false-y)
true && true true (both are true-y)
true && 20 20 (both are true-y)
Boolean에서만 사용한다면 이것은 정확히 수학적 논리의 AND 연산자입니다.
&&
연산자 연결
이 연산자가 위와 같이 정의 된 이유는 연산자 체인입니다. 이 연산자를 연결하고 위의 규칙을 유지할 수 있습니다.
true && 20 && 0 && 100 0 (it is the first false-y)
10 && 20 && true && 100 100 (last one, since all are true-y)
&&
단락
정의에서 알 수 있듯이 한 용어가 거짓임을 알게 되 자마자 다음 용어에 대해 신경 쓸 필요가 없습니다. Javascript는 심지어 이것을 한 단계 더 발전 시켰으며 용어는 평가되지도 않습니다. 이를 단락이라고합니다.
true && false && alert("I am quiet!")
이 문은 아무것도 경고하지 않고 false
반환됩니다. 따라서 &&
연산자를 if 문에 대한 더 짧은 대체물로 사용할 수 있습니다 . 다음은 동일합니다.
if (user.isLoggedIn()) alert("Hello!")
user.isLoggedIn() && alert("Hello!")
거의 모든 JS 압축기는이 트릭을 사용하여 2 바이트를 절약합니다.
&
비트 "and"입니다. 즉, 이진수로 변환 된 두 개의 숫자가있는 경우 결과는 1
두 숫자가있는 위치에 숫자가있는 숫자 1
입니다.
100011 //35
& 111001 //57
---------
100001 //35 & 57 == 33
With all the lofty, detailed insights throughout, the practical layman's answer that solved my head beating on an IF statement string of four chained && causing FAILURE to do the evaluating job at hand as an IF ((sessionStorage.myLable !== "LableStringA") && (sessionStorage.myLable !== "LableStringB") && (sessionStorage.myLableZ !== "LableStringA") && (sessionStorage.myLableZ !== "LableStringB")) { ...) was PRACTICALLY in the real world solved with the -4 down voted solution (now showing just below) by simply using a single & instead of && Thank you Jake Wayne (and Russ). Note, in testing my example != also worked if used in place of the prefered !==
To determine whether two boolean values put together are true or false, if you want to check them both (like validation on the web page), you may use the "&" operator. "&" is bitwise AND.
With the "&&" operator, once it finds the first value is false, it will end evaluation and not to check the second value.
참고URL : https://stackoverflow.com/questions/7310109/whats-the-difference-between-and-in-javascript
'developer tip' 카테고리의 다른 글
MySQL 저장 프로시 저는이를 사용하거나 사용하지 않습니다. (0) | 2020.11.27 |
---|---|
HTML5 사용의 요점 (0) | 2020.11.27 |
정적 코드 블록 (0) | 2020.11.27 |
C ++ 참조로 배열 전달 (0) | 2020.11.27 |
모카의 글로벌`before`와`beforeEach`? (0) | 2020.11.27 |