一、简介
JS共有7种数据类型:Undefined,Null,Boolean,Number,String,Symbol(新增),Object
typeof 操作符二、数据类型
(一)String
JS的字符串仅支持两个字节的字符,如果字符字节大于2,会被认为是两个字符。比如“𝌆”。
"𝌆".length //2
(二)Number
1. 整数和浮点数
JS 内部,所有数字都是以64位浮点数形式储存,即使整数也是如此。所以,1与1.0是相同的,是同一个数。由于浮点数不是精确的值,所以涉及小数的比较和运算要特别小心。
0.1+0.2 //0.30000000000000004
(0.1+0.2).toFixed(1) //0.3
2. 数值精度
精度最多只能到53个二进制位,绝对值小于2的53次方的整数,即-253到253,都可以精确表示。
3. 数值范围
JavaScript 能够表示的数值范围为21024到2-1023(开区间)
如果超出范围,就会返回Infinity。
4. 数值的进制
- 十进制:没有前导0的数值。
- 八进制:有前缀0o或0O的数值,或者有前导0、且只用到0-7的八个阿拉伯数字的数值。
- 十六进制:有前缀0x或0X的数值。
- 二进制:有前缀0b或0B的数值。
5. 特殊数值
JS可以用科学记数法表示数字
3.125e7 //31250000
3e-7 //0.0000003
NaN是 JavaScript 的特殊值,表示“非数字”(Not a Number),主要出现在将字符串解析成数字出错的场合。
5 - 'x' //NaN
isNaN(5 - 'x') //true
Infinity表示无穷
(三)Boolean
布尔值代表“真”和“假”两个状态。“真”用关键字true表示,“假”用关键字false表示。布尔值只有这两个值。
在JS中,Boolean()为false的值有:
0 //NaN
NaN //NaN
"" //NaN
undefined //NaN
null //NaN
(四)Symbol
对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型。凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。
var person = {zzy:"sb",aka:"sb"}
person.zzy == person.aka //true
var person = {zzy:Symbol("sb"),aka:Symbol("sb")}
person.zzy == person.aka //false
(五)Undefined
undefined表示“未定义”
(六)Null
null表示空值,即该处的值现在为空。调用函数时,某个参数未设置任何值,这时就可以传入null,表示该参数为空。
(七)Object
1. 属性的读取与赋值
- object['key']
- object.key
2. 属性的删除
- delete object['key']
3. 属性是否存在:in 运算符
- 'key' in object
4. 属性的遍历:for...in 循环
三、数据类型的转换
(一)String
- String(x)
- x.toString(10)
- x + ""
(二)Number
(三)Boolean
- Boolean(x)
- !!x
四、复制变量值
基本类型的值在内存中占据固定大小,因此被保存在栈内存中,从一个变量向另一个变量复制基本类型的值,会创建这个值的副本。
引用类型的值是对象,保存在堆内存中,从一个变量向另一个变量复制引用类型的值,复制的其实是指针,因此两个变量最终都指向一个对象。
网友评论