精选博客|JavaScript:简述数据类型

Posted 饥人谷前端

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了精选博客|JavaScript:简述数据类型相关的知识,希望对你有一定的参考价值。

JS 共有七种基本数据类型:

  1. Number 数值 

  2. String 字符串 

  3. Boolean 布尔值 

  4. null

  5. undefined

  6. Symbol

  7. Object 对象

前六种为原始类型(primitive type),第七种为合成类型(complex type)。

对象是最复杂的数据类型,数组、函数、正则表达式也都属于对象类型。

利用 typeof 操作符可以返回一个值的数据类型。

  1. 数值返回 number。

  2. 字符串返回 string。

  3. 布尔值返回 boolean。

  4. null 返回 object。

  5. undefined 返回 undefined。

  6. Symbol 返回 symbol。

  7. 对象返回 object。(其中函数返回 function)

typeof 123 // "number"
typeof '123' // "string"
typeof false // "boolean"

一、数值

javascript 内部,所有数字都是以64位浮点数形式储存。

(0.3 - 0.2) === (0.2 - 0.1) // false

JavaScript 浮点数的64个二进制位,从最左边开始,是这样组成的:

  • 第1位:符号位,0表示正数,1表示负数

  • 第2位到第12位(共11位):指数部分,决定了数值的大小。

  • 第13位到第64位(共52位):小数部分(即有效数字),决定了数值的精度。

数值范围:

指数大小范围为0到2047,分出一半表示负数,则 JavaScript 能够表示的数值范围为2^1024到2^-1023(开区间),超出这个范围的数无法表示。如果一个数大于等于2的1024次方,那么就会发生“正向溢出”,即 JavaScript 无法表示这么大的数,这时就会返回Infinity。

JavaScript 提供Number对象的MAX_VALUEMIN_VALUE属性,返回可以表示的具体的最大值和最小值。

Number.MAX_VALUE // 1.7976931348623157e+308
Number.MIN_VALUE // 5e-324

数值精度:

指数部分一共有11个二进制位,因此大小范围就是0到2047。IEEE 754 规定,如果指数部分的值在0到2047之间(不含两个端点),那么有效数字的第一位默认总是1,不保存在64位浮点数之中。也就是说,有效数字这时总是1.xx...xx的形式,其中xx..xx的部分保存在64位浮点数之中,最长可能为52位。因此,JavaScript 提供的有效数字最长为53个二进制位。这意味着,绝对值小于2的53次方的整数,即-253到253,都可以精确表示。大于2的53次方以后,整数运算的结果开始出现错误。

整数字面量:

整数可以用十进制、二进制、八进制以及十六进制表示。

  • 十进制整数字面量由一串数字序列组成,且没有前缀0。

  • 二进制整数以0b(或0B)开头,只能包含数字0和1。

  • 八进制的整数以 0(或0o、0O)开头,只能包括数字0-7。严格模式下必须以0o或0O开头。

  • 十六进制整数以0x(或0X)开头,可以包含数字(0-9)和字母 a~f 或 A~F。

浮点数字面量:

浮点数字面值可以有以下的组成部分:

  • 一个十进制整数,可以带正负号(即前缀“+”或“ - ”),

  • 小数点(“.”),

  • 小数部分(由一串十进制数表示),

  • 指数部分。以“e”或“E”开头,后面跟着一个整数,可以有正负号。

浮点数字面量至少有一位数字,而且必须带小数点或者“e”(大写“E”也可)。

正零和负零:

JavaScript 内部实际上存在2个0:一个是+0,一个是-0,区别就是64位浮点数表示法的符号位不同,但它们是等价的。

-0 === +0 // true
0 === -0 // true
0 === +0 // true

唯一有区别的场合是,+0-0当作分母,返回的值是不相等的,因为除以正零得到+Infinity,除以负零得到-Infinity,这两者是不相等的。

NaN:

NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。

typeof NaN // 'number'
0 / 0 // NaN
5 - 'x' // NaN
NaN === NaN // false

Infinity:

Infinity表示“无穷”,有正负之分,用来表示两种场景。一种是一个正的数值太大,或一个负的数值太小,无法表示;另一种是非0数值除以0,得到Infinity

Infinity === Infinity // true
Infinity === -Infinity // false
1 / -0 // -Infinity
-1 / -0 // Infinity

二、字符串

字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。

单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号。

如果要在单引号字符串的内部使用单引号,就必须在内部的单引号前面加上反斜杠用来转义。双引号字符串内部使用双引号,也是如此。

'Did she say \'Hello\'?'
// "Did she say 'Hello'?"

如果长字符串必须分成多行,有下面几种方法:

1、可以在每一行的尾部使用反斜杠 \

var longString = 'Long \
long'

2、使用操作符 +

var longString = 'Long'
  + 'long'

3、使用模板字面量 `

var longString = `Long
 long`

转义:

转义符(\)在字符串内用来表示一些特殊字符,常用的有:

  • \0 :null(\u0000

  • \b :后退键(\u0008

  • \f :换页符(\u000C

  • \n :换行符(\u000A

  • \r :回车键(\u000D

  • \t :制表符(\u0009

  • \v :垂直制表符(\u000B

  • \' :单引号(\u0027

  • \" :双引号(\u0022

  • \\ :反斜杠(\u005C

  • \uXXXX:由四位十六进制数字XXXX表示的Unicode字符。

字符串与数组 :

字符串可以被视为字符数组,也有length属性

var s = 'hello'
s[0] // "h"
s[1] // "e"
s.length // 5

字符集:

JavaScript 使用 Unicode 字符集,允许直接在程序中使用 Unicode 码点表示字符,即将字符写成 \uxxxx 的形式。

每个字符在 JavaScript 内部都是以16位(即2个字节)的 UTF-16 格式储存。

但是,UTF-16 有两种长度:对于码点在U+0000U+FFFF之间的字符,长度为16位(即2个字节);对于码点在U+10000U+10FFFF之间的字符,长度为32位(即4个字节),而且前两个字节在0xD8000xDBFF之间,后两个字节在0xDC000xDFFF之间。举例来说,码点U+1D306对应的字符为

以上是关于精选博客|JavaScript:简述数据类型的主要内容,如果未能解决你的问题,请参考以下文章

SPI简述

Python range 数据类型 [学习 Python 必备基础知识][看此一篇就够了][range()][range 元素元素检测元素索引查找切片负索引][检测 range 对象是否相等](代码片

Python range 数据类型 [学习 Python 必备基础知识][看此一篇就够了][range()][range 元素元素检测元素索引查找切片负索引][检测 range 对象是否相等](代码片

源码分析 ---------openHarmony IPC数据传输情景分析

JavaScript 系列博客

java之内部类精选