찾다
웹 프론트엔드JS 튜토리얼JavaScript의 특수 데이터 유형에 대한 자세한 설명

JavaScript에는 문자열, 숫자, 부울, 정의되지 않음, null 및 개체를 포함한 6가지 주요 데이터 유형이 있습니다. 다음은 이 글을 통해 자바스크립트의 특별한 데이터 유형을 소개한 내용입니다. 필요한 친구들이 참고하면 도움이 될 것입니다.

1. JS의 특수 유형: NaN

NaN은 숫자가 아닙니다. 그렇다면 NaN은 정확히 무엇인가요? JS에서는 정수형과 부동소수점 숫자를 합쳐서 숫자형이라고 부른다. 또한 숫자형에도 정확한 값이 아닌 숫자형의 상태인지를 나타내는 데 사용되는 아주 특별한 값, 즉 NaN이 있다. 값입니다(따라서 NaN은 그 자체와 동일하지 않습니다).

그럼, NaN 값은 일반적으로 어떤 상황에서 나타나는 걸까요?

일반적으로 두 가지 상황이 있습니다.

(1) 식에 빼기 기호(-), 곱하기 기호(*) 또는 나누기 기호(/)와 같은 연산자가 있는 경우 JS 엔진은 이전에 연산 변환을 시도합니다. 계산 연산자의 양쪽 변수는 숫자 유형으로 변환됩니다(변환에 실패하면 표현식은 NaN을 반환합니다. 더하기(+) 연산자는 양쪽 변수를 변환하지 않습니다. 이는 JS 표현식의 실행 순서가 연산자의 우선 순위에 따라 왼쪽에서 오른쪽으로 이루어지기 때문에 더하기 기호(+) 양쪽의 변수가 숫자 유형인 경우 숫자 추가 연산이 수행됩니다. . 변수가 문자열이면 양쪽이 다음과 같이 문자열로 추가됩니다. 숫자가 아닌 값을 숫자로 변환하면 표현식은 NaN을 반환합니다

"abc" - 3  // NaN
parseInt( "abc" ) // NaN
parseFloat( "abc" ) //NaN
Number( "abc" )  //NaN

숫자 + 문자 값의 경우 변환 결과가 달라집니다.

Number( "123abc" ); //NaN
parseInt( "123abc" ); //123
parseInt( "123abc45" ); //123
parseFloat( "123.45abc" ); //123.45

이는 Number가 전체를 변환하기 때문입니다. 값이 아닌 부분 값인 경우,parseInt 및parseFloat는 첫 번째 유효하지 않은 문자 앞의 문자열만 변환합니다.

따라서 문자열을 Number로 성공적으로 변환할 수 없는 경우,parseInt,parseFloat,NaN이 반환되는데, 이는 문자열을 숫자형으로 인식할 수 없음을 나타내는 예외 상태이며 정확한 값은 아닙니다.

그래서 NaN != NaN 입니다. 정확한 값이 아니라 예외이기 때문입니다.

또한 NaN과 관련된 함수, 즉 isNaN()이 있는데, 그 기능은 Number()로 문자열이 성공적으로 변환되는지 확인하는 것, 즉 문자열 전체를 강제로 변환하는 것입니다.

isNaN( "123" )  //false 能转换
isNaN( "abc" )  //true 不能转换
isNaN( "123abc" )  //true 部分可转换,但整体不能转换
isNaN( "123.45abc" ) //true 部分可转换,但整体不能转换

2. JS에는 undeinfed와 null이라는 두 가지 특별한 유형이 있습니다.

undefine은 JavaScript의 6가지 데이터 유형 중 하나이며 정의되지 않은 값입니다. 정의되지 않음은 '정의되지 않음'을 의미합니다. 즉, var를 사용하여 변수를 선언했지만 값이 할당되지 않은 경우 변수 값이 정의되지 않은 경우에는 두 가지 이유가 있습니다:

(1) 존재하지 않는 속성 또는 메서드에 액세스합니다.

(2) 변수가 선언되었지만 값이 할당되지 않았습니다

var v1,obj = {};
console.log(v1); //undefined
console.log(obj. get ); //undefined
typeof v1; // "undefined"
typeof v2; // "undefined"
typeof obj. get ; // "undefine"
typeof obj ; // "object"

NaN과의 차이점은 정의되지 않음도 변수의 상태를 나타내지만 이 상태 값은 확실히 고유하다는 것입니다. 변수가 선언되었지만 값이 지정되지 않은 경우 해당 상태는 정의되지 않았으므로 다음 표현식이 true입니다.

var b;
b == undefined; //true

정의되지 않음을 이해하고 나면 null 유형에도 null만 있다는 것을 이해하는 것이 훨씬 쉬울 것입니다. 하나의 값: null(유효한 데이터가 없음) 여기서 Null은 빈 값 또는 빈 개체를 의미합니다. 더 정확하게는 null에 할당된 변수에는 유효한 값, 문자열, 불리언, 배열 또는 개체 등이 저장되지 않습니다. 변수에 null을 할당하면 해결됩니다. 변수의. null이 발생하는 이유는 단 하나입니다. 즉, 변수에 null을 명시적으로 할당하는 것입니다.

var p = null ;
console.log(p); //null
typeof p ; // "object"
typeof null ; // "object"

NaN과 비교해 보겠습니다. Null도 특정하고 고유한 상태 값입니다. 변수에 null 값이 할당되면 null과 같으므로 다음 표현식도 true입니다.

var obj = null ;
obj == null ; //true

추가:

var  v1 = null;
var v2;
console.log(v1 + 1 ); // 1
console.log(v2 + 1 ); //NaN
var i = i +1;
var j = i+ 1;
console.log(i); // NaN
console.log(j ); //NaN
console.log(i == j ); //false

관련 추천:

PHP 자율 학습 no00010 특수 데이터 유형 null 값


JS 개발의 기본 데이터 유형에 대한 자세한 소개

기본 정보 js의 데이터 유형과 참조 데이터 유형의 차이점

위 내용은 JavaScript의 특수 데이터 유형에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
es6数组怎么去掉重复并且重新排序es6数组怎么去掉重复并且重新排序May 05, 2022 pm 07:08 PM

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

JavaScript的Symbol类型、隐藏属性及全局注册表详解JavaScript的Symbol类型、隐藏属性及全局注册表详解Jun 02, 2022 am 11:50 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

原来利用纯CSS也能实现文字轮播与图片轮播!原来利用纯CSS也能实现文字轮播与图片轮播!Jun 10, 2022 pm 01:00 PM

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

JavaScript对象的构造函数和new操作符(实例详解)JavaScript对象的构造函数和new操作符(实例详解)May 10, 2022 pm 06:16 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

JavaScript面向对象详细解析之属性描述符JavaScript面向对象详细解析之属性描述符May 27, 2022 pm 05:29 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

javascript怎么移除元素点击事件javascript怎么移除元素点击事件Apr 11, 2022 pm 04:51 PM

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

整理总结JavaScript常见的BOM操作整理总结JavaScript常见的BOM操作Jun 01, 2022 am 11:43 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

foreach是es6里的吗foreach是es6里的吗May 05, 2022 pm 05:59 PM

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기