찾다
웹 프론트엔드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怎么移除元素点击事件Apr 11, 2022 pm 04:51 PM

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

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

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

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

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

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

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

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를 무료로 생성하십시오.

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구