JavaScript基本数据类型总结

数据类型是决定 value 可以存为哪个类型的特性。例如在 JavaScript 中一个 Boolean 只能存放 true或false , 而一个 String 能存放任何字符串 , 一个 Number 存放任何类型的数字 , 等等...值的数据类型也影响哪个操作对该值有效,例如, 一个整数可以乘以一个整数,而不是一个字符串。

——MDN

0七种数据类型

0.1数值 Number

0.1.1定义

在 JavaScript 中, Number 是一种双精度64位浮点格式(double-precision 64-bit floating point format)/binary64 (IEEE 754-2008)/ double (IEEE 754-1958)的数字数据类型(ECMAScript )。

——MDN

0.1.2属性

格式:

符号位(用于表示正负号):1位,0表示正数,1表示负数;

指数(用于表示次方数):11位,数值范围:(2^1024,2^-1023),超出范围的数字会返回infinity;

尾数、显著精度(用于表示精确度):53位(52显式存储),可以精确表示绝对值小于2^53的数字,超出范围的整数运算的结果会开始出现错误;

整数字面量:十进制没有前缀0;二进制整数以0b/0B开头;八进制整数以0o/0O开头,只能包括数字0-7,严格模式下必须以0o/0O开头;十六进制整数以0x/0X开头;

浮点数字面量:一个十进制正数:可以带正负号;小数点;小数部分(一串由十进制表示);指数部分,以e/E开头,后面跟着整数,可以由正负号。(浮点数字面量至少有一位数字,而且必须带小数点或e/E)

正零和负零:64位浮点数表示法的符号位不同,但是等价的。

NaN:非数字。

infinity:无穷,有正负。

0.1.3关系

在其他编程语言中,有不同的数字类型存在,比如:整型(Integers),单精度浮点型(Floats),双精度浮点型(Doubles),Bignums。

优势:双精度二进制浮点格式(double)是计算机使用的一种数据类型。比起单精度浮点数,双精度浮点数(double)使用 64 位(8字节) 來储存一个浮点数。 它可以表示十进位制的15或16位有效数字,其可以表示的数字的绝对值范围大约是[2.23\times 10^((-308)),{\text{1.79))\times 10^((308))],它比单精度浮点格式具有更宽的适用范围。

劣势:与单精度浮点格式一样,与相同大小的整数格式相比,它缺乏对整数的精度。

0.2.字符串 String

0.2.1定义

由零个或多个字符组成的有限序列。它是编程语言中表示文本的数据类型。

0.2.2属性

放在单引号或双引号之中。注意在单/双引号中使用单引号需要在内部的单/双引号前面加上反斜杠用来转义。

字符串长度:在面向对象语言JavaScript把字符串表示为对象的情况下,如果值可以在运行期变更,则叫做“可变的”(mutable),如果值在建立后就不可变更了,则叫做“不变的”(immutable)

“定长字符串”,它有固定的极大长度并且不管是否达到了这个极大值都使用同样数量的内存;

“变长字符串”,它的长度不是专断固定的并且依赖于实际的大小使用可变数量的内存。(如:对象object)

0..3关系

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

1)反斜杠;2)操作符+;2)模板字面量`;

转义符(\):在字符串内用来表示一些特殊字符。

字符串与数组:

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

字符集:JavaScript运行在程序中使用Unicode码点表示字符,即将字符写成\uxxxx的形式。每个字符在JavaScript内部都是以16位(即2个字节)的UTF-16格式储存。

Base64转码:将任意值转换为0~9,A~Z,a~z,+和/这64个字符组成的可打印字符,JavaScript原生提供两个转换方法:

1)btoa():任意值转换为Base64;atob():Base64转换为原来值。

0.3.布尔值 Boolean

0.1.1定义

一种逻辑数据类型,它只能具有真值或假值。

0.1.2属性

如果JavaScript预期某个位置应该是布尔值,会将该位置上现有的值自动转换为布尔值,转换规则是除了undefined,null,false,0,NaN,' '或" "这6个值被转换为false,其他值都被视为true。

0.1.3关系

在抽象代数中,布尔代数(英语:Boolean algebra)是捕获了集合运算和逻辑运算二者的根本性质的一个代数结构(就是说一组元素和服从定义的公理的在这些元素上运算)。特别是,它处理集合运算交集、并集、补集;和逻辑运算与、或、非。

在JavaScript中,布尔条件常常用于决定执行哪部分代码(比如if语句)或重复(比如for循环)等等的逻辑计算。

0.4.undefined

0.1.1定义

当一个表达式未被赋予正确值,但在语法上是正确的时候。

表示一个“此处无定义”的原始值。

0.1.2属性

根据情况,对undefined的评估可能导致异常或未定义行为,但在某些编程语言中,未定义值可能发生在正常的、可预测的程序执行过程中。

转换数值时为NaN。

0.1.3关系

undefined不能与空字符串、布尔“false”或其他“空”(但定义的)值混淆。

可空(nullable)数据类型保留一个特殊的空值来表示undefined的值,因此null是一种值;注意,undefined通常不是值。

0.5.null

0.1.1定义

空对象。

' '

" "

0.5.2属性

转换为数值是0。

0.5.3关系


0.6symbol

0.6.1定义

Symbol 为字面量基本类型。ES6新引入的数据类型。可以创建独一无二的值。

0.6.2属性

“symbol”这个类型的值可以用来创建匿名的对象属性。该数据类型通常被用作一个对象属性的键值——当你想让它是私有的时候。例如,symbol 类型的键存在于各种内置的 JavaScript 对象中。同样,自定义类也可以这样创建私有成员。symbol 数据类型具有非常明确的目的,并且因为其功能性单一的优点而突出;一个 symbol 实例可以被赋值到一个左值变量,还可以通过标识符检查类型,这就是它的全部特性。不能对该类型实例使用其他操作符(将“Symbol”类型的实例与 “Number” 类型的实例对比,例如整数 42,该实例就具有将值与其他类型的值进行比较或组合的运算符)。

一个具有数据类型 “symbol” 的值可以被称为 “符号类型值”。在 JavaScript 运行时环境中,一个符号类型值可以通过调用函数 Symbol() 创建,这个函数动态地生成了一个匿名,唯一的值。Symbol类型唯一合理的用法是用变量存储 symbol的值,然后使用存储的值创建对象属性。

0.6.3关系

使用方法:直接使用symbol()创建新的symbol类型,并用一个可选的字符串作为其描述。

0.7对象

0.7.1定义

对象是七个原始类型中最复杂的数据类型。数组、函数、正则表达式都属于对象类型。

对象是普通键值对的集合,是一种无序的复合数据集合。

0.7.2属性

JavaScript用一个{……}表示对象,键值对以xxx:yyy形式申明,用“,”隔开,xxx是键名,通常称为“属性”,如果一个属性的值是函数,通常把这个属性称为方法,它可以像函数意义调用,yyy是键值,可以是任何数据类型。

如果一个属性的值还是一个对象,就形成了链式引用。

0.7.3方法

属性的读取;属性的赋值;属性和值的查看;属性的删除;属性是否存在;属性的遍历;对象的引用。

数组的读取;数组的赋值;数组的length属性;数组的空位;属性是否存在;数组的遍历。

函数的声明;函数的重复声明;函数的调用;函数的参数;函数的参数默认值;argument对象;函数的递归和return语句;函数名的提升;函数的属性和方法;变量作用域。

参考:https://zhuanlan.zhihu.com/p/48637522

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容