2013-08-05 3 views
3

누구든지이 이상한 자바 스크립트 동작을 설명해 주시겠습니까?왜 (+ + '') === 0입니까?

+ 
// Rightfully gets a syntax error, because there are no operands 

+ + 
// Same as above 

+ + '' 
// Interpreted as 0 

typeof(+ + '') 
// Interpreted as "number" 

+ + '' === 0 
// Interpreted as true 

즉, (+ + '')는 0으로 계산됩니다. 1) 어떻게 구문 적으로 허용됩니까? 2) 왜 0으로 계산됩니까?

+1

'+'는 무언가를 숫자로 변환하는 단항 더하기 연산자입니다. '+ ""는'Number ("")','0'과 같습니다. – Ian

+5

JavaScript이기 때문에. –

+0

'+ ''=== 0' too – Mohsen

답변

7

unary plus (+) operator은 오른쪽을 숫자로 변환합니다.

그래서 0 ← 0 ← 빈 문자열 있습니다.

+0

빈 문자열을 추가하고 있기 때문에 문자열 형식이어야하지 않아야합니까? typeof (0 + '') === "string" – carlbenson

+1

@ carlbenson : 추가/연결이 없습니다. '+ (+ (""))''(+ "(+" "))''이 될 것입니다. JS 연산자의 우선 순위와 결합을 보려면 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FOperators%2FOperator_Precedence를 참조하십시오. –