valueOf() 함수는 모든 JavaScript 객체에 대한 특수 함수입니다. Mozilla 문서에 따르면 valueOf() 함수는 "지정된 객체의 프리미티브 값을 반환합니다." JavaScript에는 6 가지 기본 유형이 있습니다.
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
등록된 댓글이 없습니다.