왜 +'11'은 숫자 11로 변환될 수 있는데 1 + '11'의 결과는 문자열 '111'인가요?
이 답변은 ES6 이전에 존재했기 때문에 이 답변은 ES5에서 가져왔습니다.
답변 출처: ECMAScript5.1 11.4.6
단항 + 연산은 연산 값을 숫자로 변환합니다. 이유는 사양에 정의되어 있습니다.
+
답변 출처: ECMAScript5.1 11.6.1
추가 작업 단계:
먼저 왼쪽 및 오른쪽 값을 메타 유형(예: 문자열 및 숫자)으로 변환합니다. 예를 들어 부울은 숫자로 변환되고 객체는 일반적으로 문자열 등으로 변환됩니다.
그렇지 않으면 lvalue와 rvalue를 모두 숫자로 변환한 다음 숫자에 대한 덧셈 연산을 수행합니다. (예를 들어 부울 변환 요소 유형은 문자열이 아니지만 여전히 부울이므로 여기서 이 분기를 판단할 때 부울 숫자 1 또는 0으로 변환)
javascript 是弱类型语言,这是一个原因。再有,如果 + 和数字放在一起,被认为是数字的正数,例如 var a = +11 等同于 var a = 11。这样,而 + 只有在字符串拼接时才会作为拼接的运算符。而 + '11'就不算是拼接字符串,因为根本没有拼接字符串。所以 js 会将 '11' 隐性的转换为 11.
javascript
var a = +11
var a = 11
+ '11'
js
'11'
11
저도 js초보자입니다. 이것이 나의 이해입니다. 틀린 내용이 있으면 정정해 주시기 바랍니다.
+'11' -----> 단항 연산자
단항 + 연산자는 피연산자를 숫자 유형으로 변환합니다.
1+'11' ---->
피연산자 중 하나가 문자열 유형인 경우 다른 피연산자를 문자열로 변환하고 두 문자열을 연결한 결과를 반환합니다.
+'11' 的 + 是正负的正,相当于 Number('11')
+'11'
Number('11')
1 + '11' 是加减的加,调用了内部的 toPrimitive 方法比较,其中一方是字符串的时候会尝试调用另一方的 toString 방법
1 + '11'
toPrimitive
toString
+'11'
답변 출처: ECMAScript5.1 11.4.6
단항
+
연산은 연산 값을 숫자로 변환합니다. 이유는 사양에 정의되어 있습니다.1 + '11'
답변 출처: ECMAScript5.1 11.6.1
추가 작업 단계:
먼저 왼쪽 및 오른쪽 값을 메타 유형(예: 문자열 및 숫자)으로 변환합니다. 예를 들어 부울은 숫자로 변환되고 객체는 일반적으로 문자열 등으로 변환됩니다.
lvalue 또는 rvalue 변환 값 중 하나가 문자열이면 접합 작업을 위해 두 값 모두 문자열로 변환됩니다.
-
결과를 반환합니다.
그렇지 않으면 lvalue와 rvalue를 모두 숫자로 변환한 다음 숫자에 대한 덧셈 연산을 수행합니다. (예를 들어 부울 변환 요소 유형은 문자열이 아니지만 여전히 부울이므로 여기서 이 분기를 판단할 때 부울 숫자 1 또는 0으로 변환)
javascript
是弱类型语言,这是一个原因。再有,如果+
和数字放在一起,被认为是数字的正数,例如var a = +11
等同于var a = 11
。这样,而+
只有在字符串拼接时才会作为拼接的运算符。而+ '11'
就不算是拼接字符串,因为根本没有拼接字符串。所以js
会将'11'
隐性的转换为11
.저도
js
초보자입니다. 이것이 나의 이해입니다. 틀린 내용이 있으면 정정해 주시기 바랍니다.+'11' -----> 단항 연산자
1+'11' ---->
+'11'
的+
是正负的正,相当于Number('11')
1 + '11'
是加减的加,调用了内部的toPrimitive
方法比较,其中一方是字符串的时候会尝试调用另一方的toString
방법