댓글 검색 목록

[javascript] JavaScript에서 valueOf() 이해

페이지 정보

작성자 운영자 작성일 20-08-01 10:05 조회 666 댓글 0

valueOf() 함수는 모든 JavaScript 객체에 대한 특수 함수입니다. Mozilla 문서에 따르면 valueOf() 함수는 "지정된 객체의 프리미티브 값을 반환합니다." JavaScript에는 6 가지 기본 유형이 있습니다.


  • Boolean: true and false
  • Number: -1, 0, 3.14, etc.
  • String: 'foo''
  • Null
  • Undefined
  • Symbol: Symbol('mySymbol')

valueOf() 함수는 typeof가 위 유형 중 하나 인 값을 반환해야 합니다. 다음은 3 가지 일반적인 JavaScript 클래스인 String, Number 및 Date에 대해 valueOf()가 반환하는 내용입니다. String # valueOf() 및 Number # valueOf()는 객체를 "unbox"하고 해당하는 기본 문자열 또는 숫자를 제공합니다. Date # valueOf()는 JavaScript 타임 스탬프를 제공합니다.

const s = new String('test');
typeof s; // 'object'
s.valueOf(); // 'test'
typeof s.valueOf(); // 'string'

const n = new Number(42);
n.valueOf(); // 42

const d = new Date('2019-06-01');
d.valueOf(); // 1559347200000

JavaScript는 연산자 == (===와 반대), <,>, <= 및> =를 사용하여 값을 비교할 때 유형 강제 변환에 valueOf() 함수를 사용합니다. 예를 들어, 다음은 <연산자에 valueOf() 사용에 대해 설명하는 JavaScript 언어 사양의 일부입니다.


valueOf ()가 항상 0을 반환하는 객체가 있다고 가정합니다. <및 == 연산자와 관련하여 이 객체는 기본 숫자 0과 같습니다. 그러나 ==의 경우 이 객체는 new Number ( =)를 사용하여 두 객체를 비교할 때 JavaScript는 valueOf()를 호출하지 않기 때문에 0).


class MyClass {
  valueOf() {
    return 0;
  }
}

const obj = new MyClass();

// For the purposes of `<`, `>`, `>=` and `<=`, `obj` is
// equivalent to 0.
obj < new Number(-1); // false
obj > new Number(-1); // true
obj < -1; // false
obj > -1; // true

// For the purposes of `==`, `obj` is equivalent to 0 as a primitive,
// but not 0 as a Number object. This is because both `obj` and
// `new Number(0)` are objects, so JS does not call `valueOf()`.
obj == new Number(0); // false
obj == 0; // true
0 == obj; // true

// `===` skips calling `valueOf()`.
obj === Number(0); // false


https://masteringjs.io/tutorials/fundamentals/valueof 



댓글목록 0

등록된 댓글이 없습니다.

웹학교 로고

온라인 코딩학교

코리아뉴스 2001 - , All right reserved.