>웹 프론트엔드 >JS 튜토리얼 >JavaScript 연구 노트의 데이터 유형

JavaScript 연구 노트의 데이터 유형

PHPz
PHPz원래의
2016-05-16 16:20:04981검색

자바스크립트의 데이터 유형은 매우 간단합니다. 정의되지 않음, null, 문자열, 부울, 숫자 및 객체만 포함됩니다. 오늘은 이러한 데이터 유형을 모두의 이해와 기억을 돕기 위해 하나씩 설명하겠습니다.

1. 분류

기본 데이터 유형: 정의되지 않음, null, 문자열, 부울, 숫자

복잡함 데이터 유형: 객체

객체의 속성은 순서가 없는 이름과 값의 쌍(이름:값) 형태로 정의됩니다.

2. 자세한 설명

1. 정의되지 않음: 정의되지 않은 유형에는 정의되지 않은 값만 있습니다. 변수가 var를 사용하여 선언되었지만 초기화되지 않은 경우 이 변수의 값은 정의되지 않습니다.

정의되지 않은 값은 정의되지 않은 변수와 동일합니다. 다음 예를 통해 설명할 수 있습니다.

var demo1;//声明但未初始化
alert(demo1);//undefined
alert(demo2);//报错,demo2 is not defined

2. null: null 유형에는 논리 값이 하나만 있습니다. 관점에서 null 값은 null 개체 포인터를 나타냅니다.

정의된 변수가 향후 개체를 보유하는 데 사용된다면 변수를 다른 값보다는 null로 초기화하는 것이 가장 좋습니다. . 이런 방식으로 null 값이 직접 감지되는 한 해당 변수가 객체에 대한 참조를 저장했는지 여부를 알 수 있습니다. 예:

 if(car != null)
    {
        //对car对象执行某些操作
    }
실제로 정의되지 않은 값은 다음에서 파생됩니다. null 값이므로 ECMA -262는 동일성 테스트에서 true를 반환하도록 지정합니다.

alert(undefined == null); //true
null과 undefine은 이러한 관계가 있지만 용도는 완전히 다릅니다. 어떤 경우에도 변수 값을 명시적으로 정의되지 않음으로 설정할 필요는 없지만 null에는 동일한 규칙이 적용되지 않습니다. 즉, 개체를 보유하도록 의도된 변수가 실제로 개체를 보유하지 않는 한 변수가 null 값을 보유하도록 명시적으로 허용해야 합니다. 이렇게 하면 null 객체 포인터로서의 null 규칙을 반영할 뿐만 아니라 null과 정의되지 않은 것을 더 잘 구별하는 데도 도움이 됩니다.


3. Boolean:

Boolean 유형에는 true와 false라는 두 가지 값이 있습니다. 이 두 값은 숫자와 다릅니다. 값이므로 true가 반드시 1일 필요는 없으며, false가 반드시 0일 필요는 없습니다.

부울 유형의 리터럴 값은 대소문자를 구분합니다. 즉, True 및 False(및 기타 대소문자 혼합 형식)는 부울 값이 아니라 식별자일 뿐입니다.

Boolean 유형의 리터럴 값은 2개뿐이지만 JavaScript의 모든 유형의 값은 이 두 Boolean 값에 해당하는 값을 갖습니다. 값을 해당 부울 값으로 변환하려면 유형 변환 함수 Boolean()을 호출할 수 있습니다. 예:

var message = 'Hello World';
    var messageAsBoolean = Boolean(message);
이 예에서는 문자열 메시지가 부울 값으로 변환되어 저장됩니다. messageAsBoolean 변수에 있습니다. Boolean() 함수는 모든 데이터 유형의 값에 대해 호출될 수 있으며 항상 부울 값을 반환합니다. 반환된 값이 true인지 false인지는 변환할 값의 데이터 유형과 실제 값에 따라 다릅니다. 다음 표에는 다양한 데이터 유형과 해당 객체에 대한 변환 규칙이 나와 있습니다.


이러한 변환 규칙은 흐름 제어 문(예: if 문)을 이해하고 해당 부울 변환을 자동으로 수행하는 데 매우 중요합니다. 예:

var message = 'Hello World';
if(message)//相当于if(Boolean(message)==true) {
        alert("Value is true");//Value is true
}
이는 자동으로 부울 변환을 실행하므로 흐름 제어 문에 어떤 변수가 사용되는지 정확히 아는 것이 중요합니다.

4. 숫자: 정수 및 부동 소수점

4.1 정수: 계산 수행 시 모든 8진수와 16진수는 10진수로 변환됩니다.

4.2 부동 소수점: 부동 소수점 값의 가장 높은 정밀도는 17자리이므로 산술 계산에서 정밀도가 정수보다 훨씬 떨어집니다. 예를 들어 0.1 0.2의 결과는 0.3이 아니라 0.30000000000000004입니다. 예:

a=0.2;
b=0.1;
if(a+b==0.3){
alert("hello");
}
else{
alert("hi");
}
결과가 "hi"로 표시되므로 특정 부동 소수점 값을 테스트하지 마세요.

4.3 NaN: 숫자가 아님 이 값은 숫자 값을 반환해야 하는 피연산자가 숫자 값을 반환하지 않음을 나타내는 데 사용됩니다(오류가 발생하지 않음).

NaN 자체에는 두 가지 특별한 특성이 있습니다. 첫째, NaN(예: NaN/10)과 관련된 모든 연산은 NaN을 반환하므로 다단계 계산에서 문제가 발생할 수 있습니다. 둘째, NaN은 NaN 자체를 포함한 어떤 값과도 동일하지 않습니다. 예:

alert(NaN == NaN);    //false
JavaScript에는 isNaN() 함수가 있습니다. 이 함수는 모든 유형의 매개변수를 허용하며 이 함수는 매개변수가 "숫자가 아닌지 확인하는 데 도움이 됩니다. 값". isNaN()은 값을 받은 후 해당 값을 숫자 값으로 변환하려고 시도합니다. 숫자가 아닌 일부 값은 문자열 "10"이나 부울 값과 같은 숫자 값으로 직접 변환됩니다. 숫자 값으로 변환할 수 없는 값은 이 함수가 true를 반환하도록 합니다. 예를 들어

alert(isNaN(NaN));    //true
alert(isNaN(10));    //false(10是一个数值)
alert(isNaN("10"));    //false(可能被转换为数值10)
alert(isNaN("blue"));    //true(不能被转换为数值)
alert(isNaN("bule123")); //ture(不能被转换为数值)
alert(isNaN(true));    //false(可能被转换为数值1)
에는 숫자가 아닌 값을 숫자 값으로 변환할 수 있는 세 가지 함수(Number(),parseInt()및parseFloat())가 있습니다. 첫 번째 함수인 변환 함수 Number()는 모든 데이터 유형에 사용할 수 있는 반면, 다른 두 함수는 특히 문자열을 숫자로 변환하는 데 사용됩니다. 이 세 가지 함수는 동일한 입력에 대해 서로 다른 결과를 반환합니다.

Number() 함수의 변환 규칙은 다음과 같습니다.

● Boolean 값인 경우 true와 false는 각각 1과 0으로 대체됩니다

● 숫자 값인 경우 그냥 전달하고 반환

● null 값인 경우 0 반환

● 정의되지 않은 경우 NaN 반환

● 문자열인 경우 다음 규칙을 따르세요.

   ○ 如果字符串中只包含数字,则将其转换为十进制数值,即”1“会变成1,”123“会变成123,而”011“会变成11(前导的0被忽略)

   ○ 如果字符串中包含有效的浮点格式,如”1.1“,则将其转换为对应的浮点数(同样,也会忽略前导0)

   ○ 如果字符串中包含有效的十六进制格式,例如”0xf“,则将其转换为相同大小的十进制整数值

   ○ 如果字符串是空的,则将其转换为0

   ○ 如果字符串中包含除了上述格式之外的字符,则将其转换为NaN

● 如果是对象,则调用对象的valueOf()方法,然后依照前面的规则转换返回的值。如果转换的结果是NaN,则调用对象的toString()方法,然后再依次按照前面的规则转换返回的字符串值。

var num1 = Number("Hello World");    //NaN
var num2 = Number("");                //0
var num3 = Number("000011");        //11
var num4 = Number(true);            //1

由于Number()函数在转换字符串时比较复杂而且不够合理,因此在处理整数的时候更常用的是parseInt()函数,而处理浮点数的时候常用parseFloat()函数。

5、String

String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由单引号(')或双引号(")表示。

var str1 = "Hello";
var str2 = 'Hello';

任何字符串的长度都可以通过访问其length属性取得

alert(str1.length);        //输出5

要把一个值转换为一个字符串有两种方式。第一种是使用几乎每个值都有的toString()方法。

var age = 11;
var ageAsString = age.toString();    //字符串"11"
var found = true;
var foundAsString = found.toString();    //字符串"true"

数值、布尔值、对象和字符串值都有toString()方法。但null和undefined值没有这个方法。

多数情况下,调用toString()方法不必传递参数。但是,在调用数值的toString()方法时,可以传递一个参数:输出数值的基数。

var num = 10;
alert(num.toString());      //"10"
alert(num.toString(2));     //"1010"
alert(num.toString(8));     //"12"
alert(num.toString(10));    //"10"
alert(num.toString(16));    //"a"

通过这个例子可以看出,通过指定基数,toString()方法会改变输出的值。而数值10根据基数的不同,可以在输出时被转换为不同的数值格式。

在不知道要转换的值是不是null或undefined的情况下,还可以使用转型函数String(),这个函数能够将任何类型的值转换为字符串。

String()函数遵循下列转换规则:

● 如果值有toString()方法,则调用该方法(没有参数)并返回相应的结果

● 如果值是null,则返回"null"

● 如果值是undefined,则返回”undefined“

6、object

对象其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。而创建Object类型的实例并为其添加属性和(或)方法,就可以创建自定义对象。

var o = new Object();

object类型所具有的任何属性和方法也同样存在于更具体的对象中,Object的每个实例都具有下列属性和方法:

● constructor(构造函数)——保存着用于创建当前对象的函数

● hasOwnProperty(propertyName)——用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例如:o.hasOwnProperty("name"))

● isPrototypeOf(object)——用于检查传入的对象是否是另一个对象的原型

● propertyIsEnumerable(propertyName)——用于检查给定的属性是否能够使用for-in语句来枚举

● toString()——返回对象的字符串表示

● valueOf()——返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同。

三、小测试

typeof(NaN)
typeof(Infinity)
typeof(null)
typeof(undefined)

很多面试都会问到上面几个小问题哒~~

以上就是这6种javascript数据类型的介绍了,小伙伴们是否了解清楚了呢,希望看完本文后大家能有所提高。更多相关教程请访问JavaScript视频教程

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.