1. 분류
기본 데이터 유형 : 정의되지 않은, 널, 문자열, 부울, 숫자
복잡한 데이터 유형 : 객체
객체의 속성은 정렬되지 않은 이름과 값 쌍 (이름 : value)의 형태로 정의됩니다.
2. 자세한 설명
1. 정의되지 않은 : 정의되지 않은 유형의 값은 하나뿐입니다. Var를 사용하여 변수가 선언되지만 초기화되지 않은 경우이 변수의 값은 정의되지 않습니다.
정의되지 않은 값을 포함하는 변수는 정의되지 않은 변수와 다릅니다. 다음 예는 다음을 설명 할 수 있습니다.
코드 사본은 다음과 같습니다.
var demo1; // 선언되었지만 초기화되지 않았습니다
Alert (Demo1); // 정의되지 않았습니다
ALERT (DEMO2); // 오류를보고, DEMO2는 정의되지 않았습니다
2. NULL : NULL 유형의 경우 값은 단 하나뿐입니다. NULL. 논리적 관점에서 볼 때, 널 값은 빈 객체 포인터를 나타냅니다.
정의 된 변수가 향후 객체를 저장하는 데 사용할 준비가 된 경우 다른 값 대신 변수를 NULL로 초기화하는 것이 가장 좋습니다. 이런 식으로 널 값을 직접 감지하면 해당 변수가 객체의 참조를 저장했는지 여부를 알 수 있습니다.
코드 사본은 다음과 같습니다.
if (car! = null)
{
// 자동차 객체에서 일부 작업을 수행합니다
}
실제로 정의되지 않은 값은 널 값에서 파생되므로 ECMA-262는 평등 테스트가 True를 반환해야한다고 지정합니다.
경고 (undefined == null); //진실
Null과 Undefined는 그러한 관계를 가지고 있지만 그들의 용도는 완전히 다릅니다. 어쨌든 변수의 값을 정의되지 않은 것으로 명시 적으로 설정할 필요는 없지만 동일한 규칙이 NULL에 적용되지 않습니다. 다시 말해, 객체를 저장하려는 변수가 아직 객체를 저장하지 않는 한, 변수는 널 값을 저장하기 위해 명시 적으로 허용되어야합니다. 그렇게하면 NULL의 협약을 NULL 물체의 포인터로 반영 할뿐만 아니라 NULL과 정의되지 않은 것을 더욱 구별하는 데 도움이됩니다.
3. 부울 : 부울 유형에는 두 가지 값이 있습니다 : True와 False. 이 두 값은 숫자 값과 동일하지 않으므로 True가 반드시 1과 같은 것은 아니며 False가 반드시 0과 같을 필요는 없습니다.
부울 유형의 문자 그대로의 값은 사례에 민감하다.
부울 유형에는 두 가지 문자 값이 있지만 JavaScript의 모든 유형의 값은이 두 부울 값의 값과 동일한 값을 갖습니다. 값을 해당 부울 값으로 변환하려면 유형 변환 함수 boolean ()을 호출 할 수 있습니다.
코드 사본은 다음과 같습니다.
var 메시지 = 'Hello World';
var messageasboolean = boolean (메시지);
이 예에서 문자열 메시지는 부울 값으로 변환되며,이 값은 MessageAsboolean 변수에 저장됩니다. 부울 () 함수는 모든 데이터 유형의 값에서 호출 될 수 있으며 부울 값은 항상 반환됩니다. 반환 된 값이 true인지 false인지 여부는 값과 실제 값을 변환하는 데이터 유형에 따라 다릅니다. 다음 표는 다양한 데이터 유형 및 해당 객체에 대한 변환 규칙을 보여줍니다.
이러한 전환 규칙은 예를 들어 유량 제어 문 (예 : IF 문)에서 해당 부울 변환의 자동 실행을 이해하는 데 매우 중요합니다.
코드 사본은 다음과 같습니다.
var 메시지 = 'Hello World';
if (메시지) // if (boolean (message) == true)에 해당합니다.
{
Alert ( "value is true"); // 값은 참입니다
}
이 자동 부울 변환으로 인해 흐름 제어 명령문에 어떤 변수가 사용되는지 정확히 아는 것이 중요합니다.
4. 숫자 : 정수 및 부동 소수점
4.1 정수 : 계산을 수행 할 때는 모든 10 대 및 16 진수 숫자가 소수로 변환됩니다.
4.2 플로팅 포인트 : 플로팅 포인트 값의 가장 높은 정확도는 17 비트이므로 산술을 계산할 때 정확도는 정수보다 훨씬 적습니다. 예를 들어 : 0.1+0.2의 결과는 0.3이 아니라 0.3000000000000000000004입니다. 예를 들어:
코드 사본은 다음과 같습니다.
a = 0.2;
b = 0.1;
if (a+b == 0.3) {
경고 ( "Hello");
}
또 다른{
경고 ( "HI");
}
결과는 "HI"가 나타나므로 특정 부동 소수점 값을 테스트하지 마십시오.
4.3 NAN : 숫자가 아닌 숫자가 아닌이 값은 원래 값을 반환하려는 피연산자가 값을 반환하지 않은 경우 (오류가 발생하지 않음)를 나타냅니다.
Nan 자체에는 두 가지 특별한 특성이 있습니다. 먼저, NAN (예 : NAN/10)과 관련된 모든 작업은 NAN을 반환합니다. NAN은 다중 단계 계산에 문제를 일으킬 수있는 기능입니다. 둘째, NAN은 NAN 자체를 포함한 값과 같지 않습니다. 예를 들어:
코드 사본은 다음과 같습니다.
경고 (nan == nan); //거짓
JavaScript에는 isnan () 함수가 있습니다. 이 함수는 모든 유형 일 수있는 매개 변수를 허용하며 함수는이 매개 변수가 "수치 값이 아님"을 결정하는 데 도움이됩니다. 값을받은 후 ISNAN ()은이 값을 숫자 값으로 변환하려고 시도합니다. 숫자 값이 아닌 일부 값은 문자열 "10"또는 부울 값과 같은 숫자 값으로 직접 변환됩니다. 숫자 값으로 변환 할 수없는 값은이 함수가 True를 반환하게합니다. 예를 들어:
코드 사본은 다음과 같습니다.
경고 (isnan (nan)); //진실
경고 (ISNAN (10)); // false (10은 숫자 값입니다)
경고 (isnan ( "10")); // false (숫자 값 10으로 변환 될 수 있음 10)
경고 (IsNan ( "파란색")); // true (숫자 값으로 변환 할 수 없습니다)
경고 (isnan ( "bule123")); // ture (숫자 값으로 변환 할 수 없음)
경고 (isnan (true)); // false (1의 값으로 변환 될 수 있음)
숫자가 아닌 값을 숫자 값으로 변환 할 수있는 3 가지 함수가 있습니다 : 숫자 (), parseint () 및 parsefloat (). 첫 번째 함수, 즉 변환 함수 번호 ()는 모든 데이터 유형에 사용될 수있는 반면, 다른 두 함수는 구체적으로 문자열을 숫자 값으로 변환하는 데 사용됩니다. 이 3 가지 기능은 동일한 입력에 대해 다른 결과를 반환합니다.
숫자 () 함수의 변환 규칙은 다음과 같습니다.
● 부울 값 인 경우 True와 False는 각각 1과 0으로 대체됩니다.
● 숫자 값이라면 단순한 패스와 리턴 일뿐입니다.
● 널 값인 경우 0을 반환하십시오
● 정의되지 않은 경우 NAN을 반환하십시오
● 문자열 인 경우 다음 규칙을 따르십시오.
○ 문자열에 숫자 만 포함하면 숫자가 포함되어 있으면 소수점 값으로 변환합니다. "1"은 1이되고 "123"은 123이되고 "011"은 11이됩니다 (주요 0은 무시됩니다).
○ 문자열에 "1.1"과 같은 유효한 플로팅 포인트 형식이 포함되어 있으면 해당 부동 소수점 번호로 변환됩니다 (또한 0은 무시됩니다).
○ 문자열에 "0xf"와 같은 유효한 16 진 형식이 포함 된 경우 동일한 크기의 소수 정수 값으로 변환됩니다.
○ 문자열이 비어 있으면 0으로 변환합니다.
○ 문자열에 위의 형식 이외의 문자가 포함 된 경우 NAN으로 변환하십시오.
● 객체 인 경우 객체의 값 () 메소드를 호출 한 다음 이전 규칙에 따라 반환 된 값을 변환하십시오. 변환 결과가 NAN 인 경우 객체의 toString () 메소드가 호출되고 이전 규칙에 따라 반환 된 문자열 값이 차례로 변환됩니다.
코드 사본은 다음과 같습니다.
var num1 = 숫자 ( "Hello World"); // 난
var num2 = 숫자 ( ""); // 0
var num3 = 숫자 ( "000011"); // 11
var num4 = 숫자 (true); // 1
문자열을 변환 할 때 숫자 () 함수가 더 복잡하고 불합리하기 때문에 정수를 처리 할 때 parseint () 함수가 더 일반적으로 사용되며, 부동 소수점 번호를 처리 할 때 parsefloat () 함수가 종종 사용됩니다. 자세한 내용은 http://www.cnblogs.com/yxfield/p/4167954.html을 참조하십시오
5. 문자열
문자열 유형은 0 이상 16 비트 유니 코드 문자, 즉 문자열로 구성된 일련의 문자를 나타내는 데 사용됩니다. 문자열은 단일 인용문 ( ') 또는 이중 인용문 ( ")으로 표시 될 수 있습니다.
코드 사본은 다음과 같습니다.
var str1 = "hello";
var str2 = 'hello';
모든 문자열의 길이는 길이 속성에 액세스하여 얻을 수 있습니다.
코드 사본은 다음과 같습니다.
경고 (str1.length); // 출력 5
값을 문자열로 변환하는 두 가지 방법이 있습니다. 첫 번째는 거의 모든 값이 가지고있는 tostring () 메소드를 사용하는 것입니다.
코드 사본은 다음과 같습니다.
var age = 11;
var ageasstring = age.tostring (); // 문자열 "11"
var found = true;
var foundAsString = found.toString (); // 문자열 "true"
숫자, 부울, 물체 및 문자열 값은 모두 toString () 방법을 가지고 있습니다. 그러나 null과 정의되지 않은 값에는이 방법이 없습니다.
대부분의 경우 ToString () 메소드를 호출한다고해서 매개 변수를 전달할 필요는 없습니다. 그러나 숫자 값의 ToString () 메소드를 호출 할 때는 출력 값의 카디널리티 인 매개 변수를 전달할 수 있습니다.
코드 사본은 다음과 같습니다.
var num = 10;
알림 (num.toString ()); // "10"
경고 (num.toString (2)); // "1010"
경고 (num.toString (8)); // "12"
경고 (num.toString (10)); // "10"
경고 (num.toString (16)); //"에이"
이 예에서, 카디널리티를 지정함으로써 toString () 메소드가 출력 값을 변경한다는 것을 알 수 있습니다. 값 10은 다른 카디널리티에 따라 출력 할 때 다른 숫자 형식으로 변환 될 수 있습니다.
변환 할 값이 널 또는 정의되지 않은지 여부를 알지 못하면 변환 함수 string ()을 사용할 수도 있으며,이 값은 모든 유형의 값을 문자열로 변환 할 수 있습니다. String () 함수는 다음 변환 규칙을 따릅니다.
● 값에 toString () 메소드가있는 경우 메소드가 호출되고 (매개 변수 없음) 해당 결과가 반환됩니다.
● 값이 NULL 인 경우 "NULL"을 반환합니다.
● 값이 정의되지 않은 경우 "정의되지 않은"반환
6. 객체
객체는 실제로 데이터 및 기능 모음입니다. 새 연산자를 실행 한 다음 생성 할 객체 유형의 이름을 실행하여 객체를 만들 수 있습니다. 유형 객체의 인스턴스를 생성하고 속성 및 (또는) 메소드를 추가하면 사용자 정의 객체를 만들 수 있습니다.
var o = new Object ();
객체 유형의 모든 속성과 방법은보다 구체적인 객체에도 존재합니다. 객체의 각 인스턴스에는 다음 속성과 방법이 있습니다.
● 생성자 (생성자) - 현재 객체를 생성하는 데 사용되는 함수를 저장합니다.
● HasownProperty (PropertyName) - 주어진 속성이 현재 객체 인스턴스에 존재하는지 확인하는 데 사용됩니다 (인스턴스의 프로토 타입이 아님). 여기서, property name (propertyname)은 매개 변수로 문자열 양식으로 지정되어야합니다 (예 : O.HasOwnProperty ( "name")).
● isprototype (object) - 들어오는 객체가 다른 객체의 프로토 타입인지 확인하는 데 사용됩니다.
● PropertyInumerable (PropertyName) - 주어진 속성을 FOR -in 문을 사용하여 열거 할 수 있는지 확인하는 데 사용됩니다.
● ToString () - 개체의 문자열 표현을 반환합니다.
● valueOf () - 객체의 문자열, 숫자 또는 부울 표현을 반환합니다. 일반적으로 tostring () 메소드의 반환 값은 동일합니다.
3. 작은 테스트
코드 사본은 다음과 같습니다.
타입 (NAN)
타입 (무한)
타입 (null)
타입 (정의되지 않은)
많은 인터뷰에서 위의 질문을 할 것입니다 ~~
위는이 6 개의 JavaScript 데이터 유형에 대한 소개입니다. 당신은 그것을 명확하게 이해 했습니까? 이 기사를 읽은 후에 개선 할 수 있기를 바랍니다.