JS中一共有七大数据类型
- 数值
- 字符串
- 布尔值
- undefined
- null
- 对象
- symbol (本文略过)
一般将数值,字符串和布尔值视为原始类型(primitive type)。unfettered和null是JavaScript中特有的,将它们视为特殊的值。而对象是最复杂的数据类型。后文会简单介绍。
1. 数值
(1)JS中所有数字都是以64位浮点数形式储存,整数也是如此。如遇到小数的运算要特别小心。
(2)数值可以用科学计数法,二进制,八进制十进制和十六进制表示。
以下是四种进制的表示方法
十进制:没有前导0的数值。
八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。
十六进制:有前缀0x或0X的数值。
二进制:有前缀0b或0B的数值。
(3)数值范围
64位浮点数的指数部分的长度是11个二进制位,意味着指数部分的最大值是2047(2的11次方减1)。也就是说,64位浮点数的指数部分的值最大为2047,分出一半表示负数,则 JavaScript 能够表示的数值范围为21024到2-1023(开区间),超出这个范围的数无法表示。
(4) NaN
NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number)。NaN不等于任何值,包括它本身。
(5) parseInt
此方法用于将字符串转为整数。parseInt方法还可以接受第二个参数(2到36之间)例如
parseInt('1000', 10) // 1000
表示十进制转换为十进制
(6) parseFloat
这个方法用于将一个字符串转为浮点数。
(7)isNaN:
isNaN方法可以用来判断一个值是否为NaN
2.字符串
字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。
(1) 转义
反斜杠(\)在字符串内有特殊含义,用来表示一些特殊字符,所以又称为转义符。需要用反斜杠转义的特殊字符,主要有下面这些。
\0 :null(\u0000)
\b :后退键(\u0008)
\f :换页符(\u000C)
\n :换行符(\u000A)
\r :回车键(\u000D)
\t :制表符(\u0009)
\v :垂直制表符(\u000B)
' :单引号(\u0027)
" :双引号(\u0022)
\ :反斜杠(\u005C)
(2) length属性
length属性返回字符串的长度,该属性也是无法改变的。
(3)字符集
avaScript 使用 Unicode 字符集。JavaScript 引擎内部,所有字符都用 Unicode 表示。
(4)Base64 转码
Base64 就是一种编码方法,可以将任意值转成 0~9、A~Z、a-z、+和/这64个字符组成的可打印字符。使用它的主要目的,不是为了加密,而是为了不出现特殊字符,简化程序的处理。
3.布尔值
布尔值分为真假两个状态,真为true,假为false
下列运算符会返回布尔值:
两元逻辑运算符: && (And),|| (Or)
前置逻辑运算符: ! (Not)
相等运算符:===,!==,==,!=
比较运算符:>,>=,<,<=
如果 JavaScript 预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。
undefined
null
false
0
NaN
""或''(空字符串)
4.null与undefined
null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。比如,某个函数接受引擎抛出的错误作为参数,如果运行过程中未出错,那么这个参数就会传入null,表示未发生错误。
而undefined表示未定义
6.对象
对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。
对象的所有键名都是字符串,如果键名不符合标识名的条件(比如第一个字符为数字,或者含有空格或运算符),且也不是数字,则必须加上引号,否则会报错。
(1) 属性
读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符。
var xxx= {
y: 'Hello World'
};
xxx.y // "Hello World"
xxx['y'] // "Hello World"
点运算符和方括号运算符,不仅可以用来读取值,还可以用来赋值。
var xxx= {};
xxx.foo= 'Hello';
obj['bar'] = 'World';
查看一个对象本身的所有属性,可以使用Object.keys方法。
(3) delete命令
delete命令用于删除对象的属性,删除成功后返回true。
var obj = { p: 1 };
Object.keys(obj) // ["p"]
delete obj.p // true
obj.p // undefined
Object.keys(obj) // []
(4) in运算符
in运算符用于检查对象是否包含某个属性(注意,检查的是键名),如果包含就返回true,否则返回false。
var obj = { p: 1 };
'p' in obj // true
(5)for...in 循环
for...in循环用来遍历一个对象的全部属性。
var obj = {a: 1, b: 2, c: 3};
for (var i in obj) {
console.log(obj[i]);
}
// 1
// 2
// 3