基本数据类型

五种基本数据类型:

  • Undefined
  • Null
  • Boolean
  • Number
  • String

复杂数据类型

  • Object

typeof 操作符

  • undefined —— 这个值未定义
  • boolean —— 这个值是布尔值
  • string —— 这个值是字符串
  • number —— 这个值是数值
  • object —— 这个是值是对象或null
  • function —— 这个值是函数
1
2
3
4
5
6
// typeof可以用来检测变量的数据类型,typeof并不是函数,
let str = "123"
console.log(typeof str) // string
console.log(typeof(123)) // number, ()可以省略
console.log(typeof null) // object 被认为是空的对象引用
console.log(typeof /[a-z]*/) // function(Safair5、Chrome7)/object

Undefined 类型

Undefined类型只有undefined一个值。在var申明变量未初始化时变量的值为undefined

1
2
3
4
// 示例
let message
console.log(message == undefined) // `true`
console.log(err) // 未定义,值不为undefined,而是报错

Null类型

Null类型只有null一个值。null值表示一个空对象指针。

1
console.log(typeof null) // object

实际上,undefined值是派生自null值的

1
console.log(null == undefined) // `true`

Boolean 类型

Boolean类型只有两个字面值:truefalse

注:truefalse区分大小写

1
2
3
// 可将值转换为Boolean类型
let message = 'hello'
let messageAsBoolean = Boolean(message) // `true`

转换规则

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 “”(空字符串)
Number 任何非零数值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined undefined

Number 类型

Number 类型包括整数和浮点数。

1
2
3
4
5
6
7
8
9
10
let num = 55 // 十进制整数
let oNum = 077 // 八进制数,以0开头
let hNum = 0xA // 十六进制数,以0x开头
let fNum = 3.3 // 浮点数
let fNum2 = 3.3e7 // 3.3*10^7
console.log(Number.MIN_VALUE) //5e-324
console.log(Number.MAX_VALUE) // 1.7976931348623157e+308
// 超过JS数组范围哦的值会被转换为 +Infinity 或者 Infinity
// 通过isFinite()函数可以判断数是否在JS范围内
console.log(isFinite(Infinity)) // `false`

NaN 是非数值(Not a number)

1
2
3
4
5
6
7
// 涉及到NAN或者 num / 0 都会返回NAN,NAN与任何数都不相等
console.log(10 / 0) // Infinity
console.log(NaN == NaN) // `false`
// isNaN 函数可以判断参数是否为数值
console.log(isNaN(NaN)) // `true`
console.log(isNaN("hello")) // `true`
console.log(isNaN("10")) // `false`

String 类型

String 类型用来表示由零或者多个16位Unicode字符组成的字符序列,即字符串。由(‘’)或者(“”)表示

字面量

字面量 含义
\n 换行
\t 制表符
\b 空格
\r 回车符
\f 进纸
\\ 斜杠
单引号
" 双引号

Object 类型

对象其实是一组数据和功能的集合。

1
2
3
// 创建对象
let o1 = new Object();
let o2 = new Object; // 可以 但不推荐

Object 的每个实例的属性和方法。

  • Constructor: 保存用于创建当前对象的函数。构造函数(constructor)就是 Object()
  • hasOwnProperty(propertName): 用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。参数的属性名(propertName)必须以字符串的形式指定。
  • isPrototypeOf(object): 用于检查给定的属性是否是另一个对象的原型
  • propertyIsEnumerable(propertName): 用于检测给定的属性是否能够使用 for-in 语句来枚举。参数的属性名(propertName)必须以字符串的形式指定。
  • toLocalString(): 返回对象的字符串表示,该字符串与执行环境的地区对于
  • toString(): 返回对象的字符串表示
  • valueOf(): 返回对象的字符串、数值或者布尔值表示