JavaScript复习——JS教程-数据类型
概述
1.简介
JavaScript 的数据类型,共有六种。(ES6 又新增了第七种 Symbol 类型的值)
- 数值(number):整数和小数
- 字符串(string):文本
- 布尔值(boolean):表示真伪的两个特殊值
- undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
- null:表示空值,即此处的值为空。
- 对象(object):各种值组成的集合。
[ 数值、字符串、布尔值这三种类型,合称为原始类型(primitive type)的值,即它们是最基本的数据类型,不能再细分了。对象则称为合成类型(complex type)的值,因为一个对象往往是多个原始类型的值的合成,可以看作是一个存放各种值的容器。至于undefined和null,一般将它们看成两个特殊值]
对象是最复杂的数据类型,又可以分成三个子类型。 - 狭义的对象(object)
- 数组(array)
- 函数(function)
2.typeof运算符
JavaScript 有三种方法,可以确定一个值到底是什么类型。
- typeof运算符
数值、字符串、布尔值分别返回number、string、boolean
函数返回function
undefined返回undefined
对象返回object
空数组([])的类型也是object - instanceof运算符
instanceof运算符可以区分数组和对象 - Object.prototype.toString方法
null, undefined 和布尔值
1.null 和 undefined
1.1概述
区别:null是一个表示“空”的对象,转为数值时为0;undefined是一个表示"此处无定义"的原始值,转为数值时为NaN
1.2用法和含义
2.布尔值
如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。
- undefined
- null
- false
- 0
- NaN
- ""或’’(空字符串)
【 注意,空数组([])和空对象({})对应的布尔值,都是true。】
数值
1.概述
1.1整数和浮点数
JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。
某些运算只有整数才能完成,此时 JavaScript 会自动把64位浮点数,转成32位整数
1.2数值精度
字符串
1.概述
1.1定义
- 字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。单引号字符串的内部,可以使用双引号。双引号字符串的内部,可以使用单引号。如果要在单引号字符串的内部,使用单引号,就必须在内部的单引号前面加上反斜杠,用来转义。(双引号同)
- 由于 HTML 语言的属性值使用双引号,所以很多项目约定 JavaScript 语言的字符串只使用单引号
- 字符串默认只能写在一行内,分成多行将会报错。如果长字符串必须分成多行,可以在每一行的尾部使用反斜杠。
- 连接运算符(+)可以连接多个单行字符串,将长字符串拆成多行书写,输出的时候也是单行
1.2转义
如果字符串的正常内容之中,需要包含反斜杠,则反斜杠前面需要再加一个反斜杠,用来对自身转义。
1.3字符串与数组
- 字符串可以被视为字符数组,因此可以使用数组的方括号运算符,用来返回某个位置的字符(位置编号从0开始)
- 如果方括号中的数字超过字符串的长度,或者方括号中根本不是数字,则返回undefined
- 无法改变字符串之中的单个字符。
1.4 length属性
2.字符集
-
JavaScript 使用 Unicode 字符集。不仅以 Unicode 储存字符,还允许直接在程序中使用 Unicode 码点表示字符,即将字符写成\uxxxx的形式,其中xxxx代表该字符的 Unicode 码点。比如,\u00A9代表版权符号。解析代码的时候,JavaScript 会自动识别一个字符是字面形式表示,还是 Unicode 形式表示。输出给用户的时候,所有字符都会转成字面形式。
-
每个字符在 JavaScript 内部都是以16位(即2个字节)的 UTF-16 格式储存。也就是说,JavaScript 的单位字符长度固定为16位长度,即2个字节。
-
但是,UTF-16 有两种长度:对于码点在U+0000到U+FFFF之间的字符,长度为16位(即2个字节);对于码点在U+10000到U+10FFFF之间的字符,长度为32位(即4个字节),而且前两个字节在0xD800到0xDBFF之间,后两个字节在0xDC00到0xDFFF之间
-
总结:对于码点在U+10000到U+10FFFF之间的字符,JavaScript 总是认为它们是两个字符(length属性为2)。所以处理的时候,必须把这一点考虑在内,也就是说,JavaScript 返回的字符串长度可能是不正确的
3. Base64转码
文本里面包含一些不可打印的符号,比如 ASCII 码0到31的符号都无法打印出来,这时可以使用 Base64 编码,将它们转成可以打印的字符。另一个场景是,有时需要以文本格式传递二进制数据,那么也可以使用 Base64 编码。
所谓 Base64 就是一种编码方法,可以将任意值转成 0~9、A~Z、a-z、+和/这64个字符组成的可打印字符。使用它的主要目的,不是为了加密,而是为了不出现特殊字符,简化程序的处理。