js의 다양한 유형의 기본 데이터는 변환될 수 있습니다. 이 변환은 규칙 기반이며 무작위가 아닙니다. js에는 문자열, 숫자, 부울, null, 정의되지 않은 5가지 기본 데이터 유형이 있으며 그중 처음 세 가지 유형은 일반적으로 계산 또는 비교에 사용됩니다.
기본 데이터 간 변환
其它类型转化数字
原始数据类型 |
目标类型Number |
undefined |
NaN |
null |
0 |
false |
0 |
true |
1 |
数字串 |
相应的数字 |
不能转化的字符串 |
NaN |
其它类型转化为字符串
原始数据类型 |
目标类型String |
undefined |
undefined |
null |
null |
false |
false |
true |
true |
数字 |
数字字符串 |
다른 유형의 기본 데이터 간의 추가로 데이터를 먼저 숫자로 변환한 후 문자열로 변환합니다(문자열 유형의 데이터가 연산에 포함된 경우)
null undefine // 0 NaN
null false // 0 0
1 true // 1 1
1 '1' //'11'; 숫자와 문자열을 더한 결과는 string
1 2 '3' //'33'; 그런 다음 (1 2)의 결과가 '3'에 추가됩니다. 여기서 각 추가 단계는 별도로 분리되어야 합니다. 그렇지 않으면 아래와 같은 결과가 됩니다. >
1 (2 '3') //'123'; 먼저 2 '3'을 계산한 다음 1 '23'
의' null //'snull'
' s' 정의되지 않음 // 'sundefine'
's' true //'true'
1 true 정의되지 않은 's' // 1 1 NaN 's'=2 NaN 's' = NaN 's'=NaN
객체는 덧셈과 뺄셈 연산에 참여합니다
객체는 기본 유형 데이터 작업에 참여하며 먼저 기본 유형으로 변환됩니다. 먼저 valueOf 메서드를 호출합니다. 반환된 값이 기본 유형이 아닌 경우 toString 메서드를 호출합니다. 반환된 값이 기본 유형이 아닌 경우 오류가 발생합니다. 하지만 날짜 데이터는 정반대입니다
//관찰을 용이하게 하기 위해 다시 작성합니다. Date 및 valueOf 메소드의 toString 메소드
Date.prototype.toString = function(){
return 1
}
Date.prototype.valueOf = function(){
return 2;
}
var a = new Date,
b = new Date
a b; 결과는 2
// toString 메소드 재작성
Date.prototype.toString = function(){
return {}; >var c = new Date ,
d = new Date;
c d; // toString 메서드를 호출하면 기본 유형이 반환되지 않고 valueOf, 2 2를 호출하면 결과는 4
// 그런 다음 valueOf Method
Date.prototype.valueOf = function(){
return {}
}
var e = new Date,
f = 새 날짜;
e f; // 오류 보고
해당 결과를 얻으려면 위의 예를 Object 또는 다른 유형으로 바꾸세요. 단, valueOf를 먼저 호출한 다음 toString을 호출하세요.
''의 마법효과
데이터 앞에 더하기 기호 ''가 있어 문자열을 숫자로 변환할 수 있습니다
코드 복사
's' 2 // NaN
참고: 이번이 처음입니다. 형식이 좋지 않고 실수도 많습니다. 누구나 기여할 수 있습니다