valueOf 와 toString 방법 연구

1754 단어 html
인터넷 에서 보면 재 미 있 습 니 다.
두 문제 먼저 보 겠 습 니 다.
var date = new Date();  
var date_string = date.toString();  
var date_value = date.valueOf();  
console.log(date == date_string);  
console.log(date == date_value );

 
 답안
true,false
 제2 문제
var now = new Date(2010,10,1);  
console.log(now+1);

 답안
IE8 이 뛰 어 나 온 결과 입 니 다.
Mon Nov 1 00:00:00 UTC+0800 20101
 
부끄러워 하 는 얼굴
이어서 우 리 는 ECMA 262 v5 의 11.6.1 절 을 다시 펼 쳐 서 가호 조작 부호 에 대한 처 리 를 보 았 다.
어느 것 이 피 가산 인지 결정 하 다.
피 가 수 를 GetValue 에 전송 하여 연산 합 니 다.
어느 것 이 피 가산 인지 결정 하 다.
가 수 를 GetValue 에 전송 하여 연산 합 니 다.
2 의 결 과 를 ToPrimitive 에 전달 하여 연산 합 니 다.
4 의 결 과 를 ToPrimitive 에 전달 하여 연산 합 니 다.
5 나 6 의 결과 가 문자열 이 라면
6 을 5 에 직접 두 고 새 문자열 로 되 돌려 줍 니 다.
그렇지 않 으 면 그것들 을 모두 숫자 (ToNumber) 로 바 꾸 어 되 돌려 줍 니 다.
이 내부 에서 ToPrimitive 방법 을 호출 합 니 다. 9.1 절 로 정의 되 어 있 으 며, 기본적으로 Object 대상 만 특수 처리 합 니 다.
형식 결과
Undefined 와 입력 시 일치, 변환 없 음
Null 입력 시 일치, 변환 없 음
Boolean 은 입력 시 와 일치 하 며 변환 되 지 않 습 니 다.
Number 와 입력 시 일치, 변환 없 음
String 은 입력 시 와 일치 하 며 변환 되 지 않 음
Object Object 는 Object 의 기본 값 을 되 돌려 줍 니 다. 내부 에 [[DefaultValue] 라 는 방법 으로 결 정 됩 니 다.
[[DefaultValue]] 알림 정보 에 따라 value Of 방법 이나 toString 방법 을 호출 합 니 다.이 알림 정 보 는 당연히 앞에서 제공 한 것 입 니 다. 우 리 는 11.6.1 절 을 되 돌 렸 습 니 다. Date 대상 을 제외 한 다른 ECMA 대상 은 모두 숫자 로 바 뀌 어야 하고 Date 는 문자열 로 바 뀌 어야 합 니 다.이곳 을 보 니 모든 의심 이 비 워 져 야 겠 지.
wtfjs 에서 어 려 운 문 제 를 언급 하 다.
[] == ![] / / 정 답 은 true, 주의 비 []! = =[]
이상 의 지식 을 가지 고 있 으 면 우 리 는 쉽게 그것 을 해결 할 수 있다.
[] ==> [].valueOf() ==> '';
![] ==> false
'' == false ==> true!!

좋은 웹페이지 즐겨찾기