Javascript的数据类型
简介:JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(ES6 又新增了第七种 Symbol 类型的值)
★★★JS共有7种数据类型!
1.数值(number):整数和小数(比如1和3.14)
2.字符串(string)
3.布尔值(boolean):表示真伪的两个特殊值,即true(真)和false(假)
4.undefined:表示“未定义”或不存在,即由于目前没有定义,所以此处暂时没有任何值
5.null:表示空值,即此处的值为空。
6.对象(object):各种值组成的集合
7.Symbol
如何确认数据类型
JavaScript 有三种方法,可以确定一个值到底是什么类型
1.typeof运算符
typeof运算符可以返回一个值的数据类型。
数值、字符串、布尔值分别返回number、string、boolean。
函数返回function。但是function不是数据类型!
undefined返回undefined。
对象返回object。
null返回object,由于历史原因造成的。
2.instanceof运算符
以后再补充
3.Object.prototype.toString方法
以后再补充
浅析数据类型
1.null和undefined
null 表示空值,即该处的值现在为空。
undefined 表示“未定义”
2.布尔值
布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只有这两个值。
下列运算符会返回布尔值:
前置逻辑运算符: ! (Not)
相等运算符:===,!==,==,!=
比较运算符:>,>=,<,<=
如果JavaScript预期某个位置应该是布尔值,会将该位置上现有的值自动转为布尔值。转换规则是除了下面六个值被转为false,其他值都视为true。
undefined
null
false
0
NaN
“”或’’(空字符串)
★★★注意:空数组([])和空对象({})对应的布尔值,都是true。
3.数值(整数与浮点数)
JavaScript 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。
由于浮点数不是精确的值,所以涉及小数的比较和运算要特别小心。
如1
20.1 + 0.2
//0.30000000000000004
数值的表示法
数值也可以采用科学计数法表示1
2
3
4123e3 // 123000
123e-3 // 0.123
-3.1E+12
.1e-23
数值的进制
十进制:没有前导0的数值。
八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。
十六进制:有前缀0x或0X的数值。
二进制:有前缀0b或0B的数值。
特殊数值
正零和负零,它们是等价的。
NaN表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。
Infinity
Infinity表示“无穷”,Infinity有正负之分,Infinity表示正的无穷,-Infinity表示负的无穷。
与数值相关的全局方法
parseInt用于将字符串转为整数。
parseFloat用于将一个字符串转为浮点数。
4.字符串
字符串就是零个或多个排在一起的字符,放在单引号或双引号之中。
空字符串
‘’
空格字符串
‘ ‘
多行字符串
有多种写法,如行末加\,引号用反引号`代替
推荐用+号连接
如1
2
3
4var s = '123456' +
'7890'
console.log(s)
//1234567890
转义
\0 :null(\u0000)
\b :后退键(\u0008)
\f :换页符(\u000C)
\n :换行符(\u000A)
\r :回车键(\u000D)
\t :制表符(\u0009)
\v :垂直制表符(\u000B)
\’ :单引号(\u0027)
\” :双引号(\u0022)
\\ :反斜杠(\u005C)
5.对象
简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合。
1 | var obj = { |
对象的所有键名都是字符串(ES6 又引入了 Symbol 值也可以作为键名),所以加不加引号都可以。
如果键名是数字,实际上都被自动转成了字符串。
对象的属性之间用逗号分隔,最后一个属性后面可以加逗号,也可以不加。
属性的读取
读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符。
如果使用方括号运算符,键名必须放在引号里面,否则会被当作变量处理。
如果键名不符合标识名的条件,且也不是数字,则必须加上引号,否则会报错。
数值键名不能使用点运算符(因为会被当成小数点),只能使用方括号运算符。
属性的读取
Object.keys1
2
3
4
5
6
7var obj = {
key1: 1,
key2: 2
};
Object.keys(obj);
// ['key1', 'key2']
属性的删除
delete命令用于删除对象的属性,删除成功后返回true。1
2
3
4
5
6var obj = { p: 1 };
Object.keys(obj) // ["p"]
delete obj.p // true
obj.p // undefined
Object.keys(obj) // []
属性的遍历:for…in 循环
它遍历的是对象所有可遍历(enumerable)的属性,会跳过不可遍历的属性。
它不仅遍历对象自身的属性,还遍历继承的属性。1
2
3
4
5
6
7
8
9
10
11
12var obj = {a: 1, b: 2, c: 3};
for (var i in obj) {
console.log('键名:', i);
console.log('键值:', obj[i]);
}
// 键名: a
// 键值: 1
// 键名: b
// 键值: 2
// 键名: c
// 键值: 3