js valueOf 와 toString

1698 단어
그들의 차 이 를 분명히 하려 면 먼저 몇 가지 문 제 를 생각해 라.
  • JS 에서 대상 유형 을 어떻게 기본 유형 으로 바 꿉 니까
  • 왜 많은 코드 규범 에서 사용 금지 ==
  • JS 에서 기본 유형 간 에 어떻게 전환 되 는 지
  • JS 에서 == 연산 은 어떻게 작 동 합 니까
  • 대상 이 기본 유형 으로 바 뀌 려 면 대상 자체 의 기본 유형 으로 바 꾸 는 방법 이 필요 하 다.
  • value Of 와 toString 은 암시 적 변환 시 에 만 호출
  • ES5 전에 value Of 방법 을 먼저 호출 합 니 다. 이 방법 이 없 으 면 toString 방법 을 호출 합 니 다.대상 자체 에 이 두 가지 방법 이 없다 면 원형 체인 에 toString 이 있 을 것 입 니 다.type: Of, instanceof, Object. prototype. toString 에서 대상 유형 을 가 져 올 수 있 습 니 다.
  • ES5 이후 Symbol. toPrimitive 방법 을 먼저 호출 하고 그 다음 에 value Of, toString 을 사용 합 니 다.
  • 원본 데이터 가 아니라면 오류 가 발생 합 니 다. Cannot convert object to primitive value
  • 덧셈 연산
  • 한 쪽 은 문자열 이 고 다른 한 쪽 도 문자열 로 전환
  • 한 쪽 이 문자열 이나 숫자 가 아니면 문자열 이나 숫자 로 전환한다.대상 유형 을 기본 유형 으로 바 꾸 었 습 니 다. 위 에서 언급 했 습 니 다.
  • let a = {
      valueOf() {
        return 100;
      },
      toString() {
        return 'aaa';
      },
    };
    let b = {
      toString() {
        return 'bbb';
      },
    };
    a + true; // 101
    a + '1'; // 1001
    b + 1; // bbb1
    

    사 칙 연산 중의 기타 연산
    숫자 로 강하 게 전환, 변환 실패 NaN
    let a = {
      valueOf() {
        return 100;
      },
      toString() {
        return 'aaa';
      },
    };
    let b = {
      toString() {
        return 'bbb';
      },
    };
    console.log(`${a}`); // aaa
    a * true; // 100
    a / '1'; // 100
    a - 'a'; // NaN
    b * 1; // NaN
    

    기본 유형 간 전환
  • boolean 유형 으로 전환: 0, - 0, NaN, ', undefined, null 을 제외 하고 모두 true
  • 문자열 로 전환: 1 은 '1' 이 되 고 true 는 'true' 가 됩 니 다.주의해 야 할 것 은 Symbol 이 다른 유형의 값 과 연산 할 수 없고 문자열 로 변환 할 때 자체 적 으로 toString 방법 을 호출 해 야 한 다 는 것 이다.
  • 좋은 웹페이지 즐겨찾기