2017-10-31 1 views
0

나는이 질문을 this JavaScript Quiz을 복용하고 발견되었다.자바 스크립트의 문자열에 빼기 (-) 연산자가 있습니까?</p> <pre><code>"1" - - "1"; </code></pre> <p><code>The result of this statement is 2</code> -

아무도 여기서 무슨 일이 일어날 지 설명 할 수 있습니까?

나는 심지어 -으로 문자열 추가가 발생하지만 홀수 - 빼기를 발견했습니다. 숫자가 문자열 인 경우에만 발생합니다. 여기

좀 더 eamples-

"1" - "1" => 0 
"1" - - "1" => 2 
"1" - - - "1" => 0 
"1" - - - - "1" => 2 
"a" - "b" => NaN 
+3

1 - - 1 == 1 - (-1) == 1 + 1 ... 문자열에'-'을 쓰면 문자열이 숫자로 강제 변환됩니다. –

+0

당신이 요구하는 것이 아니지만 자연스러운 다음 단계로 (단항 플러스 연산자) (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus_()). "+"1 "+ +"1 " '=>'2'가 아니라''1 '+''1'' =>''11 "'이됩니다. – nnnnnn

답변

1

식이 "1" - (-"1") 동등하다. 단항 마이너스는 인수 ("1")를 숫자 (1)로 변환하고 역수 (-1)를 취합니다. 이진 빼기는 인수 ("1"-1)를 숫자 (1-1)로 변환하고 차이 (2)를 계산합니다. ECMA 스크립트 spec 당으로

0

:

12.8.4 빼기 연산자 (-)

5. lnum을 ToNumber(lval)으로 지정하십시오.

6. rnum을 ToNumber(rval)이라고합시다.

7. 즉 감산의 경우, 피연산자들 모두가 숫자로 변환 의미 lnumrnum

으로 감산 동작을 적용한 결과를 반환한다.

그래서 "1"

-. "1"실제로 ToNumber("1")- ToNumber("1")을 의미하지만, 그것은 (자바 사람이 그것을 호출하는 것처럼) "과부하"이후 +에, 그것은 문자열의 경우에 "연결 간다

관련 문제