첫 번째 피연산자로 문자열이있는 더하기 연산자가 문자열이 아닌 값을 반환 할 수 있습니까?

Pavlo

Flow v0.52.0은 다음과 같이 괜찮습니다.

"" + ""
"" + 0

하지만 괜찮지 않다

"" + null
"" + undefined
"" + true
"" + {}

AFAIK, 문자열과 함께 더하기 연산자를 첫 번째 피연산자로 사용하면 항상 문자열이 반환됩니다. 사실, 이것은 Babel이 템플릿 리터럴 트랜스 파일에 사용하는 것입니다 .

`${true}${false}` === "" + true + false

여기에 뭔가 빠졌나요?

로간 프 신화

흐름은 대부분의 암시 적 형식 변환을 허용하지 않습니다. "" + 0이 문자열로 숫자를 변환하는 일반적인 방법이지만, 변환 할 경우 기본적으로이 결코으로 허용 null하거나 undefined또는 암시 적으로 문자열에 다른 종류.

사실 이것은 Babel이 템플릿 리터럴 트랜스 파일에 사용하는 것입니다.

현재 Babel의 기본값은 성능과 사양 준수 사이의 경계를 목표로합니다. 당신이 보면 옵션 , 당신은 그것을 볼 수 있습니다spec: true

`${true}${false}`

다음과 같다

"".concat(true, false) // Babel 7.x

여기서 .concat사용되는 암시하여 문자열로 변환 한 값을 .valueOf의미한다.

Babel 6은 관련없는 주문 문제가있는 더 긴 버전을 사용합니다.

'' + String(true) + '' + String(false) + '' // 6.x

여기서 String()함수는 "문자열로 변환"이라고 명시 적으로 말합니다.

템플릿 리터럴 구문을 사용할 때 '' + true문자열 화를 요청하는 반면 원래 대소 문자는 그렇지 않습니다. 이는 템플릿 리터럴이 "문자열을 원합니다"의 명시 적 선언 인 반면 +연산자는 연결을 요청하기 때문에 의미가 있습니다. 대부분의 경우 암시 적 변환은 원하지 않습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관