(myvar && foo ())는 JavaScript에서 무엇을 의미합니까?
-
20-09-2019 - |
문제
(myVar && foo())
위의 코드는 무엇을 의미합니까? 그것에 동등한 것은 무엇입니까?
나는 그것이 한 줄로 실행된다고 생각합니다.
해결책
표현은 평가합니다 myvar
만약에 myvar
거짓이고 foo()
만약에 myvar
진실입니다. 다음 스 니펫은 거의 동일합니다.
var x = (myvar && foo());
if(myvar){ var x = foo(); } else { var x = myvar; }
다른 팁
"Myvar가 거짓이 아닌 경우 foo ()를 실행하십시오"와 동일시하는 표현입니다. 다음과 같이 사용되는 경우 : var x = (myVar && foo())
, 결과는 다음과 같습니다.
Myvar가 거짓이 아닌 경우 x는 foo ()의 출력으로 설정됩니다. Myvar가 거짓이면 X는 Myvar의 값으로 설정됩니다.
foo () 함수는 myvar가 아닌 경우에만 호출됩니다. 거짓: 거짓이 될 수 없음, "", 0, null 또는 정의되지 않은 것을 의미합니다. (다른 사람?)
다음과 같은 예를 보는 것이 더 일반적입니다.
window.console && console.log("some helpful debug info");
이것은 다음과 같이 해석됩니다 ...
" '창'변수에 '콘솔'이라는 멤버가있는 경우 ..."
( '창'으로 '콘솔'을 접두하는 것이 중요합니다. 콘솔이 정의되지 않은 경우 거짓 대신 javaScript 오류가 발생하기 때문입니다.)
"... '콘솔'객체에서 '로그'메소드를 호출하십시오."
이 표현은 부울 표현에서 단락을 영리하게 사용하고 있습니다. foo ()는 myvar가 평가하는 경우에만 실행됩니다. true
.
if (myVar) {
foo();
}
훨씬 더 명확합니다. 이런 종류의 코드가 의미가있는 경우가있을 수 있지만 스타일 체커 (이런 종류의 일에 관심이 있다면)가 그에 맞게 적합합니다. 보다 http://javaScript.crockford.com/code.html. 세미콜론 삽입 및 발현 진술에 의존하지 않는 것이 좋습니다.
편집 : 참고하십시오 var x = a && b();
아마도 특정 상황에서는 그렇게 나쁜 생각이 아닐 것입니다. 하지만, (a && b())
그 자체로는 여러 가지면에서 잘못입니다. (세미콜론 삽입, 표현 진술, 의미 적으로 비밀스러운 것 외에는)
&&가 평가 될 때 왼손이 먼저 평가됩니다. myVar
, 이것이 사실이라면 오른쪽 만 평가됩니다. foo()
. 이는 문서에서 A && B에서 A가 False 인 경우 a && b 표현이 항상 False로 평가되기 때문입니다.
위의 진술은 일반적으로 다음과 같은 방식으로 사용됩니다.
var x = myVar && foo();
이것은 또한 다음과 같이 쓸 수 있습니다.
if myVar is truee x = foo(), else x = false