JavaScript의 데이터 유형 은 null, undefine, boolean, string, number, 물체. object는 참조 유형이고 의 나머지 5개 유형은 기본 유형 또는 기본 유형입니다. typeof 메소드를 사용하면 어떤 유형이 속하는지 출력할 수 있습니다. 서로 다른 유형의 변수를 비교하려면 먼저 유형을 변환해야 하는데, 이를 유형 변환이라고 합니다. 암시적 변환은 일반적으로 연산자 덧셈, 뺄셈, 곱셈, 나눗셈, 같음, 작음, 큼 등을 사용하여 발생합니다. .
typeof '11' //string typeof(11) //number '11' < 4 //false
String 숫자를 추가하면 숫자가 문자열로 변환됩니다.
2. 숫자에서 문자열을 빼고 문자열을 숫자로 변환합니다. 문자열이 순수 숫자가 아닌 경우 NaN으로 변환됩니다. 문자열에서 숫자를 뺀 경우에도 마찬가지입니다. 두 문자열을 빼면 먼저 숫자로 변환됩니다. 3. 곱셈, 나눗셈, 보다 큼, 보다 작음, 뺄셈의 변환에도 동일하게 적용됩니다.//隐式转换 + - * == / // + 10 + '20' //2010 // - 10 - '20' //-10 10 - 'one' //NaN 10 - '100a' //NaN // * 10*'20' //200 '10'*'20' //200 // / 20/'10' //2 '20'/'10' //2 '20'/'one' //NaN
4. 문자열과 부울을 비교할 때 둘을 숫자로 변환하세요
// == undefined == null; //true '0' == 0; //true,字符串转数字 0 == false; //true,布尔转数字 '0' == false; //true,两者转数字 null == false; //false undefined == false; //false
배열은 객체인 한 참조 유형이므로 []는 true입니다. 참조 유형을 숫자나 문자열로 변환하려면 valueOf() 또는 toString()을 사용하세요. 객체 자체는 valueOf() 및 toString()을 상속하며, valueOf() 및 toString( ). 객체에 따라 상속된 valueOf()를 사용하여 문자열, 숫자 또는 그 자체로 변환하고, 객체는 toString을 사용하여 문자열로 변환해야 합니다. 일반 객체는 기본적으로 valueOf()를 호출합니다. 1. 객체를 숫자로 변환할 때는 valueOf()를 호출합니다.
2. 객체를 문자열로 변환할 때는 toString()을 호출합니다.
먼저 살펴보세요. 다음 예에서는
0 == []; // true, 0 == [].valueOf(); -> 0 == 0; '0' == []; // false, '0' == [].toString(); -> '0' == ''; 2 == ['2']; // true, 2 == ['2'].valueOf(); -> 2 == '2' -> 2 == 2; '2' == [2]; // true, '2' == [2].toString(); -> '2' =='2'; [] == ![]; //true, [].valueOf() == !Boolean([]) -> 0 == false -> 0 == 0;
객체를 숫자로 변환할 때 valueOf()가 호출되고 그 전에 toString()이 호출되므로 valueOf 메서드는 다음과 같습니다. 따라서 위의 예 0 == []는 보다 합리적인 다음과 같이 변경되어야 합니다. 어쨌든 []는 결국 0으로 변환됩니다.
var valueOf = function (){ var str = this.toString(); //先调用toString(),转成字符串 //... } 0 == []; // true, 0 == [].valueOf(); -> 0 == '0' -> 0 == 0;
사용자 정의된 valueOf() 및 toString();
1. 사용자 정의된 valueOf()와 toString()이 모두 존재하며 기본적으로 valueOf()가 호출됩니다.
2. toString()만 있는 경우 toString()을 호출합니다.
var a = [1]; a.valueOf = function (){ return 1;} a.toString = function (){ return '1';} a + 1; // 2, valueOf()先调用
valueOf()를 제거하면 toString()이 호출됩니다.
rree다른 것을 반품하면 어떻게 되나요?
var a = [1]; a.valueOf = function (){ return 1;} a.toString = function (){ return '1';} a + 1; // 2, 先调用valueOf() //去掉valueOf delete a.valueOf; a + 1; // '11', 调用toString()
다른 객체는 valueOf()를 호출하여 다른 유형으로 변환합니다.
var a = [1]; a.valueOf = function (){return ;} a.toString = function (){return 1 ;}; 1 - a; //NaN
참조 유형 간의 비교는 메모리 주소 비교이므로 암시적 변환은 필요하지 않습니다. 여기에 자세히 설명되어 있습니다.
var a = {}; a.valueOf(); //Object {} var a = []; a.valueOf(); //[] 自己本身 var a = new Date(); a.valueOf(); //1423812036234 数字 var a = new RegExp(); a.valueOf(); // /(?:)/ 正则对象
더 쉬운 변환 방법이 있습니다.
아아아아위 내용은 JavaScript의 암시적 유형 변환에 대한 간략한 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!