Node.js 매직 "+"연산

우리 모두 알다시피 js는 약한 언어입니다. Java와 달리 변수를 정의 할 때 변수의 유형을 선언해야합니다. 일반적으로 '+'연산을 사용하면 숫자를 추가하거나 문자열에 철자를 입력합니다. 다음과 같은 몇 가지 놀라움도 있습니다.
1. 간단한 것부터 시작하겠습니다.

 true+true

2가 출력되는 이유는 js가 실행될 때 true를 숫자 1로 변환하고 false를 0으로 변환하기 때문입니다.

2. 또 다른 변태 :

[3,4]+[5,6]=?

어린이 신발의 원리를 안다면 답은 3,45,6인데, 왜 그렇습니까?
그 이유는 간단합니다. 우선 js의 데이터 유형에 대해 이야기 해 보겠습니다. 기본 유형은 정의되지 않음, 널 (null), 숫자, 문자열, 부울 (boolean) 및 복잡한 데이터 유형 배열 및 객체입니다. "+"연산을 수행 할 때 :
A : 숫자 더하기 인 경우 일반 더하기 연산을 수행합니다.
B : 더하기 중 하나가 숫자가 아닌 경우 문자열 스 플라이 싱을 위해 문자열 유형으로 변환됩니다. ;
C : 복합 유형 인 경우 Array는 string () 메서드를 사용하여 해당 배열을 해당 문자열로 변환합니다. 빈 Array 인 경우 "가됩니다. 비어 있지 않은 배열 인 경우 예를 들어 , [5,6]은 '5., 6'로 변환되며, 객체 인 경우 문자열 메서드 호출 후 '[object Object]'를 반환
하므로 [3,4] + [5,6] = '3,4'+ '5,6'= 3,45, 6
3. 업그레이드 된 비정상 :

{a:4}+[5,6]=?

위의 계산 방법에 따르면 [object Object] 5,6
{a : 4} + [5,6] = '[object Object]'+ '5,6'= [object Object] 라고 빠르게 결론을 내릴 수 있습니다 . 5, 6
4 역겨운 추가 항목을 살펴 보겠습니다.

[]+{}=?
{}+[]=?

출력하면 첫 번째는 '[object Object]'로 계산 논리와 일치하지만 두 번째는 '0'이됩니다 (일부 브라우저는 일반적으로 '[object Object]'). 0에 대한 이유는 무엇입니까? 첫 번째 {}가 다시 실행되면 브라우저는이를 명령문 (선언)으로 처리하고 실제 실행은 + []이고, + []이면 Number ([])를 0
5로 전달 합니다. 두 개가 비어 있으면 어떨까요? 개체가 함께 추가됩니까?

{}+{}=?

일부 브라우저의 실행 결과는 '[object Object] [object Object]'이고 일부 실행 결과는 NaN입니다. NaN 인 경우 실행 프로세스는 + Number ({})를 실행하는 것과 동일한 포인트 5와 유사합니다. , 결과는 NaN입니다.

요약 :
1. 숫자 + 숫자 = 더하기 연산 (예 : 2 + 3 = 5)
2. 숫자 + 문자열 또는 문자열 + 문자열 = 문자열 스 플라이 싱, 1 + 'a'= '
1a'3.Array + Object = string (Array) + string (객체)
4. {} + any = Number (any)

추천

출처blog.csdn.net/weixin_43169949/article/details/95016829