JavaScript 데이터 유형 소개

不言
풀어 주다: 2019-03-23 09:33:47
앞으로
2177명이 탐색했습니다.

이 기사는 JavaScript 데이터 유형에 대한 자세한 소개를 제공합니다. 이는 특정 참조 가치가 있으므로 도움이 될 수 있습니다.

최근 세 명의 개발자를 인터뷰했는데, 그들 중 누구도 JS의 기본 유형이 무엇인지 명확하게 설명하지 못했습니다. 그리고 그들은 종종 int, float, double 및 기타 데이터 유형과 같은 일부 C 언어 데이터 유형을 실수로 언급합니다.

어떤 언어이든 데이터 유형에 대한 숙련도는 이 언어의 가장 기본적인 지식 포인트입니다.

JS 데이터 유형은 두 가지 범주로 나뉘는데, 하나는 기본 유형이며 여기에는

  • Number
  • String
  • 이 포함됩니다. Boolean
  • Undefine
  • Null
  • Symbol

JS에는 몇 가지 기본 유형만 있습니다. 또한 다른 유형은 객체입니다.

숫자형

JS에는 정수형, 부동소수형, 이중형 값이 없습니다. 모든 값을 숫자형이라고 합니다.

JS는 IEEE754 형식을 사용하여 정수 및 부동 소수점 숫자를 나타냅니다. 일반적으로 정수는 32비트를 차지하고 부동 소수점 숫자는 64비트를 차지합니다. 부동 소수점 숫자는 정수 메모리 공간의 두 배를 차지하기 때문에 js는 저장을 위해 부동 소수점 숫자를 정수로 적절하게 변환합니다.

4.0 === 4 // true
로그인 후 복사

숫자 유형의 크기는 다양합니다.

Number.MAX_VALUE  // 1.7976931348623157e+308
Number.MIN_VALUE // 5e-324
Number.MAX_SAFE_INTEGER // 9007199254740991
Number.MIN_SAFE_INTEGER // -9007199254740991
로그인 후 복사

부동 소수점 숫자는 일반적으로 계산 결과가 부정확합니다. 이는 JS 문제가 아니며 모든 언어에 존재합니다.

0.1 + 0.2 === 0.3을 계산한 결과는 항상 false입니다. 0.1 + 0.2 === 0.3这个结果永远是false。

要比较浮点数是否相等,可以采用Number.EPSILON

부동 소수점 숫자가 같은지 비교하려면 Number.EPSILON을 사용하면 됩니다. Number.EPSILON은 매우 작은 숫자입니다. 두 부동 소수점 숫자가 Number.EPSILON보다 작은 경우에는 다음과 같습니다. 동등한 것으로 간주됩니다.

Math.abs(0.1 + 0.2 - 0.3) < Number.EPSILON // true
로그인 후 복사
숫자형에는 특별한 세 형제가 있습니다
  1. Infinity 숫자형의 최대값을 초과하면 양의 무한대가 됩니다
  2. -Infinity 숫자형이 숫자의 최소값보다 작을 때 type이면 음의 무한대가 됩니다
  3. NaN NaN은 숫자값이 아니라는 뜻입니다. 예를 들어 특정 값을 0으로 나누면 일반 언어에서는 오류가 발생하지만 js에서는 오류가 발생하지 않습니다. 변수는 NaN이 됩니다.

숫자 유형이 이 삼형제가 되면 이후의 숫자 연산에 참여할 수 없습니다.

문자열 유형

정적 언어를 배우는 학생들은 문자열을 만나면 다음과 같은 질문을 할 것입니다. 얼마나 많은 문자열을 담을 수 있나요?

문자열은 우스꽝스럽게 웃으며 이렇게 말했습니다. 내가 태어난 이후로 한 번도 채워진 적이 없습니다!
ECMAScript 2016(ed. 7)에서는 최대 길이를 2^53 - 1 요소로 설정했습니다. 이전에는 Firefox에서 최대 길이가 지정되지 않았습니다. , 문자열의 최대 길이는 230 - 2(~1GB)입니다. Firefox 65 이전 버전에서는 최대 길이가 2
28 - 1(~256MB) --MDN

Boolean

부울 값입니다. 매우 간단하며 false와 true라는 두 가지 값만 있습니다. 그러나 많은 사람들은 어떤 값이 거짓으로 변환될 것인지 완전히 대답하지 못합니다.

false로 변환될 수 있는 다음 값을 제외하고 나머지는 모두 true입니다.

false
''
NaN
undefined
0, -0, +0
null
로그인 후 복사
undefine 및 null

undefine은 변수가 정의되었지만 값이 할당되지 않았음을 나타냅니다. null은 변수가 전혀 정의되지 않았음을 의미합니다. 즉, undefined, null 여부와 관계없이 기본적으로는 사용할 수 없는 값입니다.

널 유형에는 특별한 기능이 있습니다. 예를 들어, 이 변수를 가비지 수집 준비가 된 것으로 표시하려는 경우 해당 값을 null로 설정할 수 있습니다.

가장 친숙한 낯선 사람: 객체
JS에서 객체가 가장 단순하다고 생각했는데 사실 너무 순진했어요.

// 定义一个对象,so easy
var boy = {
  name: 'wangduanduan'
}
로그인 후 복사
var boy = {}
Object.defineProperty(boy, 'name', {
 writable: false,
 value: 'wdd'
})
boy.name = 'ddw' // 设置不会生效,boy.name的值还是wdd
로그인 후 복사
개체의 데이터 속성데이터 속성기본값Descriptionconfigurabletrue이 속성을 삭제로 삭제할 수 있는지 여부를 나타냅니다. 열거 가능 true이 속성이 for in 루프를 통해 탐색될 수 있는지 여부를 나타냅니다.writabletrue이 속성이 수정될 수 있는지 여부를 나타냅니다.valueundefine이 속성의 데이터 값을 나타냅니다.

if configurable, enumerable, writable을 지정하지 않고 Object.defineProperty를 호출하면 기본값은 모두 false입니다.

접속자 속성

접근자 속성은 가져오고 설정되며, 이를 통해 값을 읽거나 쓸 때 차단 계층을 수행할 수 있습니다.

var man = {
    _sex: 1
}
Object.defineProperty(man, 'sex', {
 set: function (v) {
     this._sex = v === '男' ? 1 : 0
 },
 get: function () {
     return this._sex === 1 ? "男" : "女"
 }
})
nam.sex // 男
로그인 후 복사
위의 _sex를 sex로 바꾸면 어떻게 될지 생각해 보세요.

// 这样写会有什么问题
var man = {
    sex: 1
}
Object.defineProperty(man, 'sex', {
 set: function (v) {
     this.sex = v === '男' ? 1 : 0
 },
 get: function () {
     return this.sex === 1 ? "男" : "女"
 }
})
로그인 후 복사
이 기사는 여기서 끝났습니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 JavaScript Video Tutorial 칼럼을 주목하세요! 🎜

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

관련 라벨:
원천:segmentfault.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿