2013-03-05 2 views
0

오늘 로깅 및 테스트 조건을 시도하는 동안 나는 Chome 콘솔로 다음 시나리오를 보았습니다. 누군가가 왜이 행동을하는지 정확히 이해할 수있게 도와 줄 수 있습니까?console.log()는 괄호()를 사용하지 않고 논리 테스트를 반환하지 않습니다.

// 1. in this output "this is not good" is not there and returned is false then 
// undefined ?? is that returned value 
console.log("this is not good = " + 100 > 0) 
false 
undefined 
// 2. next case is executing fine by introducing()... 
// undefined ?? return type 
console.log("this is not good = " + (100 > 0)) 
this is not good = true 
undefined 
+0

kamituel 님의 답변이 맞습니다.연산자 우선 순위는 괄호가 어떻게 동작을 변경하는 방법과 이유를 설명합니다. 'undefined' 결과에 관해서 콘솔은 입력 된 표현식의 값을보고합니다. ('2 + 2'를 입력하면'4'가 반환됩니다.)'console.log'는 리턴 값을 가지지 않으므로 디스플레이에 무엇인가를 출력하지만 리턴 할 때'undefined' 값은 무엇입니까? 표시됩니다. –

+0

안녕하세요 고마워요. 때로는 커피 한 잔 마시는 것이 좋을 것 같아요.) : ... 처음에는 왜 이걸 알아 내지 못했을까요? ...) ... –

답변

3

문제는 연산자 우선 순위에 있습니다. 'Plus'연산자 (+)는 >보다 우선 순위가 높습니다.

console.log((this is not good = " + 100) > 0); 

을 JS의 interpeter이 문자열과 "100"를 연결할 것이다 첫 번째 단계에서는 다음과 같이

그래서 첫 번째 로그를 해석하여있다.

자세한 내용은 MDN article을 참조하십시오.

0

정상적인 동작입니다.

1)

"this is not good = " + 100 > 0 

평가는 평가합니다 :

"this is not good = 100" > 0 

그것은 너무 false가 인쇄됩니다, 분명히 false입니다.

2)

"this is not good = " + (100 > 0) 

을 평가 당신은 그냥 문자열을 출력합니다

"this is not good = " + true 

을 평가합니다.

보너스) 그리고 undefined을 위해, 그 console.log()의 반환 valuse입니다. 이 기능은 항상 undefined입니다.

0

은 자바 스크립트는 사용자가 지정한 순서대로 작업을 실행하고 있기 때문에.

"this is not good = " + 100 

this is not good = 100 

가 발생합니다 및 문자열이 아닌 0보다 큰 있기 때문에 다음

"this is not good = + 100" > 0 

은 잘못된 것입니다. 귀하의 흐름에


는 첫 번째 변수는 문자열이며, + (추가 연산자) 두 개의 문자열을 CONCAT하려고합니다. 그런 다음 100"100"에 캐스팅되어 추가됩니다. 대신 괄호를 사용하는 경우

(첫 번째 변수는 100, 숫자되기 때문에), 수학 작업이 실행되고 그 결과 false는 문자열 "false"에 반환 캐스팅 될 것입니다 후 첫 번째 문자열 변수에 추가.

관련 문제