Javascript의 암시적 강제

유형 강제 변환은 값을 한 유형에서 다른 유형으로 변환하는 프로세스입니다.

우리가 사용할 때

Number('89') or String(55)


유형을 다른 유형으로 변환하기 위해 값을 직접 변환하므로 Explicit 강제 변환을 수행하고 있습니다.

그러나 경우에 따라 JS Engine은 일부 작업을 실행하기 위해 변수를 변환해야 합니다.

예를 들어 ==(등호 연산자)를 사용할 때 두 값이 같은 유형이 아니면 암시적 강제 변환을 사용해야 합니다(JS 엔진이 값을 자체적으로 변환함).

⚠️ ===로 착각하지 마세요.

문제는 이 경우 이 프로세스를 어떻게 처리하느냐입니다.

55 == '55'

// or

'toto' == { name: 'toto' }


설명된 예와 함께 이 프로세스에 대한 치트 목록을 제공합니다!



프로세스를 이해하는 일반적/쉬운 방법이지만 개체 대 모든 비교를 위해 프로세스에 대한 몇 가지를 요약했습니다.

이 과정은 나중에 설명하겠지만 전역 논리만 이해하려는 경우에는 필요하지 않습니다.

예시



문자열 대 숫자

// 1)

'toto' == 24

// Convert string into number so 

Number('toto') == 24

// But we got NaN for this conversion

NaN == 24 // false !


개체 대 문자열

// 2)

'hello' == {}

// Use .toString() with object vs any

'hello' == {}.toString()

// So we got

'hello' == '[object Object]' // false


객체 대 부울

// 3)

true == {}

// Use .toString() with object vs any

true == {}.toString()

true == '[object Object]' // number vs string

// convert boolean into number Number (true) = 1

1 == '[object Object]'

// We have String vs Number,
// Almost done ! We just need to convert string into number now 

1 == Number('[object Object]')

// But

1 == NaN // false !


고급 부분



개체 대 모든 비교의 경우 조금 더 복잡합니다. 사실 이 작업을 2가지 종류로 나누어야 합니다.

날짜 객체의 경우 object.toString()를 사용해야 합니다. 반환 값이 기본 값이면 비교하고, 그렇지 않으면 object.valueOf()를 사용하고, 이 값이 기본 값이 아니면 TypeError를 던지고, 그렇지 않으면 값을 반환합니다.

다른 객체*의 경우 object.valueOf()를 사용해야 합니다. 반환 값이 기본 값이면 비교하고, 그렇지 않으면 object.toString()를 사용하고, 이 값이 기본 값이 아니면 TypeError를 던지고, 그렇지 않으면 값을 반환합니다.



일반적으로 .toString()는 object vs any에만 사용하지만 이제 강제 변환 처리를 더 잘 이해할 수 있습니다!


나는 당신이 이 독서를 좋아하기를 바랍니다!

🎁 저를 팔로우하고 저를 MP 하시면 제 새 책Underrated skills in javascript, make the difference을 무료로 받으실 수 있습니다 😁

또는 가져오기HERE

🎁 MY NEWSLETTER

☕️할 수 있습니다SUPPORT MY WORKS 🙏

🏃‍♂️ 👇에서 저를 팔로우하실 수 있습니다.

🕊 트위터 :

👨‍💻 Github: https://github.com/Code-Oz

그리고 이 글을 🔖 표시할 수 있습니다!

좋은 웹페이지 즐겨찾기