数据类型分类
6种简单数据类型:
- Undefined
- Null
- Boolean
- Number
- String
- Symbol
1种复杂的数据类型
- Object
判断数据类型
1、typeof操作符
"undefined"表示值未定义;
"boolean"表示值为布尔值;
"string"表示值为字符串;
"number"表示值为数值;
"object"表示值为对象(而不是函数)或 null;
"function"表示值为函数;
"symbol"表示值为符号。
各类型简单介绍
1、Undefined类型
Undefined类型只有一个值: undefined
当我们使用了var或let声明变量但没有初始化的时候,就相当于给变量赋予了undefined值。
2、Null类型
Null类型同样只有一个值:null
逻辑上讲,null值表示一个空对象指针,这也是给typeof传一个null会返回object的原因
let car = null;
console.log(typeof car) // 'object'
在定义将来要保存对象值的变量时,建议使用 null 来初始化,不要使用其他值。这样,只要检查
这个变量的值是不是 null 就可以知道这个变量是否在后来被重新赋予了一个对象的引用,比如:
if (car != null) {
// car 是一个对象的引用
}
console.log(undefined) // true
**
即使 null 和 undefined 有关系,它们的用途也是完全不一样的。如前所述,永远不必显式地将
变量值设置为 undefined。但 null 不是这样的。任何时候,只要变量要保存对象,而当时又没有那个
对象可保存,就要用 null 来填充该变量。这样就可以保持 null 是空对象指针的语义,并进一步将其
与 undefined 区分开来。
null 是一个假值。因此,如果需要,可以用更简洁的方式检测它。不过要记住,也有很多其他可
能的值同样是假值。所以一定要明确自己想检测的就是 null 这个字面值,而不仅仅是假值。
**
3、Boolean类型
Boolean(布尔值)类型有两个字面值: true 和 false
虽然布尔值只有两个,但所有其他 ECMAScript 类型的值都有相应布尔值的等价形式。要将一个其他类型的值转换为布尔值,可以调用特定的 Boolean() 转型函数。
let str = 'hello, world ';
let strBoolean = Boolean(str); // true
** Boolean()函数可以在任意类型的数据上调用,并且始终返回一个布尔值 **
不同类型与布尔值的转换规则
总结: 空字符串、0、NaN、null、undefined 会转换为false
掌握上述转换十分重要,像if等控制语句会自动执行其他类型值到布尔值的转换,例如:
let msg = 'hello, world!'
if(msg) {
console.log('value is true')
}
4、Number类型
数值类型
(1)、NaN(not a number ) 不是数值
可以用isNaN()函数来判断这个参数是否 ‘不是数值’
(2)、数值转换
有三个函数可以将非数值转换为数值:Number( ) 、 parseInt( ) 和 parseFloat( )
Number()
let num1 = Number("Hello world!"); // NaN
let num2 = Number(""); // 0
let num3 = Number("000011"); // 11
let num4 = Number(true); // 1
parseInt()
一般情况建议使用parseInt( ) , 并传入第二个参数 10
let num1 = parseInt("1234blue"); // 1234
let num2 = parseInt(""); // NaN
let num3 = parseInt("0xA"); // 10,解释为十六进制整数
let num4 = parseInt(22.5); // 22
let num5 = parseInt("70"); // 70,解释为十进制值
let num6 = parseInt("0xf"); // 15,解释为十六进制整数
** 接收第二个参数作为进制数
let num = parseInt("0xAF", 16); // 175
let num1 = parseInt("AF", 16); // 175
let num2 = parseInt("AF"); // NaN
parseFloat()
与parseInt( )类似
let num1 = parseFloat("1234blue"); // 1234,按整数解析
let num2 = parseFloat("0xA"); // 0
let num3 = parseFloat("22.5"); // 22.5
let num4 = parseFloat("22.34.5"); // 22.34
let num5 = parseFloat("0908.5"); // 908.5
let num6 = parseFloat("3.125e7"); // 31250000
5、String类型
String(字符串)数据类型表示零或多个 16 位 Unicode 字符序列。字符串可以使用双引号(")、
单引号(’)或反引号(`)标示,因此下面的代码都是合法的:
let firstName = "John";
let lastName = 'Jacob';
let lastName = `Jingleheimerschmidt`
(1)、字符字面量
\n 换行
\r 回车
\b 退格
\f 换页
\t 制表
(2)、字符串特点
ECMAScript 中的字符串是不可变的(immutable),意思是一旦创建,它们的值就不能变了。要修改
某个变量中的字符串值,必须先销毁原始的字符串,然后将包含新值的另一个字符串保存到该变。
(3)、转换为字符串 toString( ) String( )
let num = 123;
num.toString()
String(123)
6、Symbol类型
下周写吧 - 0 -