3.4 数据类型
八种数据类型:Number、String、Boolean、Undefined、Null、Object、BigInt、Symbol。
Object称为引用类型或复杂类型,其余七种为基本数据类型(原始类型)。
JavaScript是“动态类型”的编程语言。其变量在前一刻是一种数据类型,下一刻该变量可以赋值为另一种数据类型。例如,一个变量可以在前一刻是个字符串,下一刻就存储一个数字。
3.4.1 typeof操作符
- 作用:用来确定变量的数据类型
- 使用方法:
typeof 变量名或typeof(表达式)
使用typeof操作符会返回下列字符串之一:
| 返回值 | 含义 |
|---|---|
| undefined | 表示值未定义 |
| boolean | 表示值为布尔值 |
| string | 表示值为字符串 |
| number | 表示值为数值 |
| object | 表示值为对象(而不是函数)或者null |
| function | 表示值为函数 |
| symbol | 表示值为符号 |
3.4.2 Number类型
- 表示整数和浮点数。
数字表示的范围:
- 最小正数值:Number.MIN_VALUE,这个值为5e-324,小于这个的数字会被转化为0
- 最大正数值:Number.MAX_VALUE,这个值为1.7976931348623157e+308
- 除了常规的数字,还包括所谓的“特殊数值”也属于Number类型:
- Infinity:代表数学概念中的无穷大,也可以表示-Infinity。例如,1/0得到的就是无穷大。
- NaN:NaN代表一个计算错误,它是一个错误的操作所得到的结果。例如,字符串和一个数字相乘
- 表示进制
二进制以0b开头,八进制以0o开头,十六进制以0x开头。
3.4.2.1 isNaN()函数
isNaN()函数用于检查其参数是否是非数字值。如果参数为NaN或字符串、对象、undefined等非数字值则返回true,否则返回false。
3.4.3 String类型
-
属性
属性名 说明 用法 length 用户获取字符串的长度 字符串变量.length -
字符串拼接
var name = "qzw" var info = "My name is" var infoName1 = info + name //My name is qzw
3.4.4 Boolean类型
阿巴阿巴~
3.4.5 Undefined类型
- 最好在变量定义的时候进行初始化
- 不要显示地将一个变量赋值为undefined。如果变量刚开始什么都没有,可以初始化为0、空字符串、null等值。
3.4.6 Null类型
Null类型只有一个值,即null。通常用来表示一个对象为空,所以在给一个对象进行初始化时,会赋值为null。
var obj1 = {} //此时,堆内存中已经为对象开辟出一个内存地址,表示这个对象已经存在
var obj2= null //当一个对象进行初始化但不知道初始化为什么值时,使用null对其进行初始化,并且null在转成Boolean类型时会转为false
console.log(typeof null) //object
null和undefined的区别:
- undefined通常只有在一个变量声明但是未初始化时,它的默认值是undefined才会用到;
- null值非常常用,当一个变量准备保存一个对象时,但是这个对象不确定时,可以先赋值为null。
3.4.7 Object类型
通常称为引用类型或复杂类型。
3.5 数据类型的转换
在大所属情况下,运算符和函数会自动地将赋予他们的值转换为正确的类型,这叫做隐式转换。我们也可以自己通过显示的方式来对数据类型进行转换【显示转换】。
3.5.1 转为String类型
-
隐式转换【常用】
①一个字符串和其它类型进行 + 操作
-
如果 + 运算符左右两边有一个是字符串,那么另一边会自动转换成字符串类型进行拼接
如果一个Number类型的变量要转为String类型。最简单的办法就是加上一个空字符串。
②某些函数的执行也会自动将参数转换为字符串类型
- 例如:consolg.log函数
-
// 隐式转换
// ①一个字符串和其它类型进行 + 操作
var num1 = 2
var str1 = "abc"
var result1 = num1 + "" //非常常用
var result2 = num1 +str1
console.log(result1)
console.log(result2)
-
显示转换
①调用String()函数
②调用toString()方法
var num2 = 2
var num2Str = String(num2)
console.log(num2Str)
console.log(typeof num2Str) //string
3.5.2 转为Number类型
- 隐式转换
在算数运算 - 、*、/中,通常会将其它类型转换成数字类型来进行运算,例如:"6" / "2"。但是如果是 + 运算,并且其中一边又有字符串,那么还是按照字符串来连接的。
var result1 = "6" - "2"
console.log(result1) // 4
var result1 = "6" * "2"
console.log(result1) // 12
var result1 = "6" / "2"
console.log(result1) // 3
- 显示转换
使用Number()函数。
var num1 = 2
var result1 = Number(num1) // 2
console.log(typeof result1) // number
console.log(Number("123")) // 123
- 其它类型转换为Number类型的规则
| 值 | 转换后的值 |
|---|---|
| undefined | NaN |
| null | 0 |
| true和false | true转换为1,false转换为0 |
| string | 规则:先对字符串进行处理,去掉字符串中首位空格。若处理后的字符串为空,则转换结果为0;若为纯数字,则转换为数字;若含有其它字符,则转换为NaN |
// 其它规则
var result2 = Number(undefined)
console.log(result2) // NaN
console.log(typeof result2) // number
// String类型转Number类型
console.log(Number("")) // 0
console.log(Number("123")) // 123
console.log(Number(" 123 ")) // 123
console.log(Number("abc123")) // NaN
console.log(Number("123abc")) // NaN
3.5.3 转为Boolean类型
常发生在运算的判断条件中。
-
隐式转换
值 转换后 0、null、undefined、NaN、'"" 0 其它值 1 注意:包含0的字符串转换后是true(非空的字符串总是true)