文章目录
6种数据类型
通过 typeof
运算符可以输出某个变量的数据类型~
- Undefined 🙉
- Null(特殊) - 空的Object 🙉
- Boolean
- Number
- String
- Object 👍
Undefined 未定义
一般的,未初始化或未声明的变量均为undefined,但是 未声明
的变量名只能用来执行 typeof
判断。
Null 空对象指针
- Undefined 类型只有一个值
undefined
,Null 类型同样只有null
。 - 👍 初始化变量时如果
未来打算用来存储 Object
,设置值为null
是好的习惯。 - 一个事实是,Null 类型
派生
出了 Undefined 类型,因此null == undefined
是正确的。
Boolean 布尔型
只有 true
和 false
两个值。一个值得关注的重点内容是:采用 Boolean(Message)
可以将任意类型转换取得一个 Boolean
类型的值,见下:
类型 | 转为 true | 转为false |
---|---|---|
String | 任意 非空字符串 | 空字符串 " " |
Number | 任意 数字值 | 0 和 NaN |
Object | 任意 对象 | null |
Undefined | 均为 false |
👍 这些内容比较重要,因为 if (Message) { //code block }
会取其 Boolean
值。
Number 数字
几个进制的整数:
var int = 10
var real_int = 10.0 // 自动转换优化
var octal_num = 072 // 8进制, in which not use strict
var hex_num = 0xA1 // 16进制, 任意大小写
带小数点的家伙:
var float = 10.0
var bad_float = .012 // 能跑, 但没必要
var fake_float = 1.234e7 // 这其实是12340000, 科学计数法
范围和精度:
var tiny_float = 1e-17 // 最高精度是17位小数
console.log(Number.MIN_VALUE) // 5.00e -324
console.log(Number.MAX_VALUE) // 1.79e +308
// 超出范围将变成 Infinity, 或者是 -Infinity
JavaScript 中的 NaN
:
- 除以 0 时数字会变成 NaN,保证了代码仍能跑。
- 👍 为了保证代码正确跑起来,NaN 不等于
!=
NaN。 - 使用
isNaN()
可以判断能否变成
数字,false
可以,"10" 和 10 可以
,"blue"
不行,没这个能力。
用于 Number 的转型函数
Number()
如果是 null 返回 0,如果是 undefined 返回 NaN,字符串会自动删除前导的 0
,并可以正确判断小数点.
和十六进制0x
,如果是对象,先调用对象的valueOf()
,如果是NaN
再调用toString()
。parseInt()
主要用于字符串,且更加合理,会自动取出字符串中第一个是数字的值
,比如parseInt("2012blue")
即为 2012,parseInt("")
会取出 NaN,而Number("")
转换出来的数字为 0。parseFloat()
规则和👆上面的大概一样,有一些关于小数点的细节篇幅较长,就不在此赘述了~
String 字符串
- 单双引号的效果是一样的。
- 字符字面量 又叫
转义序列
,换行符\n
,制表符\t
,退格符\b
,斜杠\\
(同理单双引号),Unicode 字符\u0000
- JS中的字符串不可变,如
lang = lang + str
,会创造一个长度为lang.length
的字符串,浅拷贝内容后把原来的lang
销毁掉。 toString()
的参数即为输出的数字基数,如toString(16)
将会输出一坨 16进制的数字,用时有奇效。
Object 对象
JS中的对象是一坨 数据和功能的集合
,通过 new customTypedObject()
来创建新的对象,使用 new Object
省略构造函数也是可以的,但不推荐。
- ⚠️ 需要注意的是,JS 的
Object
和java.lang.Object
里的一样,它所具有的属性和方法存在于更具体的对象中,只是一个它的所有实例的基础,这一点将会在后续针对prototype 原型
进行进一步的了解~