>  기사  >  웹 프론트엔드  >  JavaScript의 데이터 유형에 대한 자세한 설명

JavaScript의 데이터 유형에 대한 자세한 설명

黄舟
黄舟원래의
2017-03-01 15:00:371286검색

1.정의되지 않은 유형

정의되지 않은 유형에는 특수한 정의되지 않은 값이 하나만 있습니다. var를 사용하여 변수를 선언했지만 초기화되지 않은 경우 변수 값은 정의되지 않습니다. 예:

var message;
alert(message == undefined); //true

이 예에서는 변수만 선언합니다. 메시지가 표시되지만 초기화되지 않습니다. 이 변수를 정의되지 않은 리터럴과 비교하면 결과가 동일하다는 것을 알 수 있습니다. 이 예는 다음 예와 동일합니다.

var message = undefined;
alert(message == undefined); //true

이 예는 정의되지 않은 값으로 message 변수를 명시적으로 초기화합니다. 하지만 초기화되지 않은 값은 기본적으로 정의되지 않기 때문에 이렇게 할 필요가 없습니다.

2. Null 유형

Null 유형은 값이 하나만 있는 두 번째 데이터 유형입니다. 논리적 관점에서 볼 때 null 값은 null 개체 포인터를 나타내며, 이것이 바로 다음 예와 같이 typeof 연산자를 사용하여 null 값을 감지할 때 "object"가 반환되는 이유입니다.

var car = null;
alert(typeof car); // "object"


정의한 변수가 나중에 객체를 보관하는 데 사용될 예정이라면 변수를 다른 값이 아닌 null로 초기화하는 것이 가장 좋습니다. 이러한 방식으로 다음 예와 같이 null 값을 직접 확인하여 해당 변수가 이미 객체에 대한 참조를 보유하고 있는지 여부를 알 수 있습니다.

if (car != null){
// 对car 对象执行某些操作
}

사실 , 정의되지 않은 값은 null 값에서 파생되므로 ECMA-262는 동등성 테스트가 true를 반환하도록 지정합니다.

alert(null == undefined); //true

여기서 null과 정의되지 않은 값 사이의 동등성은 연산자( ==)는 항상 true를 반환하지만 이 연산자는 비교 목적으로 피연산자를 변환한다는 점에 유의하세요(자세한 내용은 이 장의 뒷부분에서 설명). null과 정의되지 않음은 서로 관련되어 있지만 완전히 다른 용도로 사용됩니다. 앞서 언급했듯이 어떠한 경우에도 변수의 값을 명시적으로 undefine으로 설정할 필요는 없지만 null에는 동일한 규칙이 적용되지 않습니다. 즉, 개체를 보유하도록 의도된 변수가 실제로 개체를 보유하지 않는 한 변수가 null 값을 보유하도록 명시적으로 허용해야 합니다. 이렇게 하면
이 null 개체 포인터로서의 null 규칙을 반영할 뿐만 아니라 null과 정의되지 않음을 더 잘 구별하는 데도 도움이 됩니다.

3.부울 유형

이 유형에는 true와 false의 두 가지 리터럴 값만 있습니다. 이 두 값은 숫자 값과 동일하지 않습니다. 따라서 true가 반드시 1이 되는 것은 아니며, false가 반드시 0이 되는 것은 아닙니다. 다음은

부울 유형의 값을 변수에 할당하는 예입니다.

var found = true;
var lost = false;

부울 유형의 리터럴 값은 true이고 false는 대소문자를 구분합니다. 즉, True 및 False(및 기타 대소문자 혼합 형식)는 부울 값이 아니라 식별자일 뿐입니다. Boolean 유형의 리터럴 값은 2개뿐이지만 ECMAScript의 모든 유형의 값은 이 두 Boolean 값과 동일한 값을 갖습니다. 값을 해당 부울 값으로 변환하려면 다음 예와 같이 변환 함수 Boolean()을 호출할 수 있습니다.

var message = "Hello world!";
var messageAsBoolean = Boolean(message);
BooleanExample01.htm

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

데이터 유형

true

값으로 변환 false

부울

true

false

문자열

비어 있지 않은 문자열

""(빈 문자열)

숫자

0이 아닌 모든 숫자 값(무한대 포함)

0 및 NaN

정의되지 않은 개체

모든 개체

null

정의되지 않음

 

undefined

4.Number类型

5.NaN

NaN,即非数值(Not a Number)是一个特殊的数值,这个数值用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。例如,在其他编程语言中,任何数值除以0 都会导致错误,从而停止代码执行。但在ECMAScript 中,任何数值除以0 会返回NaN①,因此不会影响其他代码的执行。NaN 本身有两个非同寻常的特点。首先,任何涉及NaN 的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。其次,NaN 与任何值都不相等,包括NaN 本身。例如,下面的代码会返回false:


alert(NaN == NaN); //false

针对NaN 的这两个特点,ECMAScript 定义了isNaN()函数。这个函数接受一个参数,该参数可以是任何类型,而函数会帮我们确定这个参数是否“不是数值”。isNaN()在接收到一个值之后,会尝试将这个值转换为数值。某些不是数值的值会直接转换为数值,例如字符串"10"或Boolean 值。而任何不能被转换为数值的值都会导致这个函数返回true。请看下面的例子:

alert(isNaN(NaN)); //true
alert(isNaN(10)); //false(10 是一个数值)
alert(isNaN("10")); //false(可以被转换成数值10)
alert(isNaN("blue")); //true(不能转换成数值)
alert(isNaN(true)); //false(可以被转换成数值1)

6.数值转换

有3 个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()。第一个函数,即转型函数Number()可以用于任何数据类型,而另两个函数则专门用于把字符串转换成数值。这3 个函数对于同样的输入会有返回不同的结果

 以上就是JavaScript中数据类型详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!


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