js에는 문자열 유형, Null 유형, 숫자 유형, 부울 유형 및 객체 유형의 6가지 일반적인 데이터 유형이 있습니다.
1. typeof에 관한 참고 사항
데이터 유형에 관해서라면 연산자 유형을 언급하는 것은 불가피합니다. 참고 사항:
1. typeof는 메소드가 아니라 연산자입니다. 객체의 데이터 유형을 얻기 위해 종종 typeof()를 사용하지만.
2. null의 typeof는 객체이고(null은 빈 객체 참조이기 때문입니다), function의 typeof는 함수입니다.
다음과 같이 코드 코드를 복사합니다.
Alert(typeof null);
함수 데모(){
경고('데모');
}
경고(데모 유형);
2. 다양한 데이터형의 객체변수에 대한 초기값 설정
Object 유형의 객체 변수가 처음에 무엇을 할당할지 모르는 경우 var 데모={}를 사용하지 말고 null로 설정하는 것이 가장 좋습니다.
다음과 같이 코드 코드를 복사합니다.
var d2=널;
d2={'키':"젠장"};
var d3='';//문자열 기본값
var d4=0; //숫자형 초기값은 0으로 설정됩니다.
var d5=null; //객체 유형의 초기 기본값 설정
3. undefine과 null의 차이점과 주의할 점
1. "=="를 사용하여 비교하면 값을 비교하므로 동일합니다.
2. 구별하는 방법에는 두 가지가 있습니다. (핵심은 데이터 유형을 비교하는 것입니다.)
1) typeof를 사용하여 구별하십시오.
2) 일치하는 "==="를 사용하십시오. 값과 데이터 유형을 비교하며 모두 동일한 경우에만 true가 반환됩니다.
다음과 같이 코드 코드를 복사합니다.
경고(정의되지 않음 == null); //참
경고(유형이 정의되지 않음 == 유형이 null); //false
경고(정의되지 않음 === null); //참
4. 부울에 대한 참고 사항
1. true와 1의 비교도 같고, false와 0의 비교도 같습니다("==" 비교입니다). 왜냐하면 데이터형 변환을 내부적으로 구현하여 true를 1로 변환하고, false를 변환하기 때문입니다. 0으로. js 내부에는 많은 데이터가 있습니다. 유형의 자동 변환은 모든 사람이 주의해야 할 사항입니다. 나중에 더 많은 내용이 언급될 것입니다. 그러나 "==="를 사용하는 것은 데이터 유형이 동일하지 않기 때문에 동일하지 않습니다.
2. Boolean() 메소드를 사용하여 변환을 표시합니다. 주의해야 할 것은 다양한 데이터 유형, 언제 true로 변환할지, 언제 false로 변환할지입니다.
1) 문자열 유형, 빈 문자열이 아닌 한 true로 변환됩니다.
2) 숫자 유형, 0이 아닌 한 음수라도 true로 변환됩니다.
3) 객체 유형은 null 유형이 아닌 한 true로 변환됩니다.
4) 정의되지 않은 유형은 false로 변환됩니다.
시연은 하지 않겠습니다. 직접 해보실 수 있습니다.
3. (***) if() 문의 () 내부에서 Boolean 함수가 호출됩니다.
5. 숫자형에 관한 주의사항
1. float형은 정밀한 연산을 수행할 수 없습니다.
다음과 같이 코드 코드를 복사합니다.
경고(0.1+0.2);//0.3000000000000000004를 반환합니다.
2. 과학 표기법 작업 지원
3. NaN(숫자가 아님)
1) var d=0/0; 참고: js에서는 오류가 보고되지 않지만 NaN이 반환됩니다.
2) Number.NaN을 통해 얻을 수 있습니다.
3) NaN과 객체 간의 모든 연산은 NaN을 반환합니다.
4) isNaN()은 NaN인지 여부를 결정합니다.
다음과 같이 코드 코드를 복사합니다.
경고(isNaN(NaN));//true
경고(isNaN(12));//false
Alert(isNaN('123'));//false: 문자열형 숫자는 자동으로 숫자로 변환될 수 있기 때문입니다.
Alert(isNaN('lew'));//true
Alert(isNaN(false));//(*)false: bool 값을 숫자로 변환할 수 있으므로 true는 1, false는 0이 됩니다.
5) isNaN()의 내부 실행 원리: 객체에도 동일하게 적용됩니다. 구현 원칙: 총리는 객체의 valueOf() 메소드를 호출합니다. 숫자로 변환할 수 있으면 직접 판단하고, toString() 메소드를 다시 호출합니다. 그런 다음 반환 값을 테스트합니다.
valueOf()는 내부적으로 toObject() 메서드를 호출합니다. 두 메서드의 내부 실행 원리는 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
var 상자={
//상자 객체의 toString() 메서드를 재정의합니다.
toString:함수(){
'123'을 반환합니다.
}
};
Alert(isNaN(box));//false
Alert(box);//123 내부적으로 Alert()는 먼저 객체의 valueOf()를 호출한 다음 toString() 메서드를 호출합니다.
6) 다른 데이터 유형을 숫자 유형으로 변환
세 가지 함수가 포함되어 있습니다. Number(): 모든 데이터 유형을 변환할 수 있습니다.
다음과 같이 코드 코드를 복사합니다.
경보(번호('123'));//123
경보(번호('0234'));//234
경고(숫자(true));//1
Alert(숫자(null));//(**)0
//위를 제외한 모든 항목은 NaN을 반환합니다.
Alert(숫자(정의되지 않음))//NaN
Number()의 내부 구현 원리: isNaN()과 동일하며 valueOf()가 먼저 호출되고 그 다음 toString()이 호출됩니다. . 그래서 상대적으로 성능이 좋지 않다는 것을 짐작할 수 있습니다. . 따라서 변환할 객체가 문자열인 경우 내부적으로 유형을 판단할 필요가 없으므로parseInt() 또는parseFloat()를 호출하십시오.
ParseInt() 및 ParseFloat() 호출 시 참고 사항: 첫 번째 숫자 문자부터 시작하여 첫 번째 숫자 문자 앞의 숫자까지의 문자열 부분이 숫자로 변환됩니다.
다음과 같이 코드 코드를 복사합니다.
Alert(parseInt('123leb'));//123
Alert(parseInt('123leb345'));//123
Alert(parseInt('len234'));//NaN
parsInt()의 매개변수가 float 유형인 경우 숫자의 정수 부분만 가져옵니다.
다음과 같이 코드 코드를 복사합니다.
경고(parseInt(56.12));//56
6. 문자열 유형
1) (*중요*) ECMAScript에서는 문자열을 변경할 수 없습니다. 문자열은 생성된 후에 변경되지 않습니다.
값이 할당된 문자열 변수를 변경하려면 먼저 변수의 문자열을 삭제한 다음 변수를 새 값이 포함된 문자열로 채웁니다.
다음과 같이 코드 코드를 복사합니다.
var d='안녕하세요';
d=d+'똥';//실행 프로세스: 먼저 'hello'에 값을 할당한 다음 d에서 문자열을 지우고 'hello'와 'shit' 문자열을 연결한 다음 d 변수에 값을 할당합니다. (따라서 문자열의 값은 한번 생성되면 변하지 않습니다)
2) toString() 메소드는 다른 데이터 유형을 String 유형으로 변환합니다. 그러나 null 또는 정의되지 않은 작업을 수행하면 오류가 보고됩니다.
3) 그러나 String() 메서드는 toString()의 효과를 얻을 수도 있지만 null 및 정의되지 않은 경우에도 작동할 수 있습니다.
내부 원칙: toString()을 먼저 호출하고 문자열로 변환할 수 있으면 결과가 직접 반환됩니다. 아니요, 그런 다음 null인지 정의되지 않았는지 판단한 다음 'null' 또는 'undefine'을 반환합니다.
요약: 변수가 null이거나 정의되지 않을 수 없다는 것을 알고 있는 경우 String()보다 성능이 더 뛰어난 toString()을 사용하세요. String()은 내부 판단을 해야 하기 때문에 성능이 저하됩니다.