什么是数据类型
js编译器在解析代码的时候,会产生各种不同的数据。 而不同的数据’运算’与’存储’方式都不同, 计算机需要对这些数据进行分类,称之为数据类型。
数据类型介绍
numder 数字类型
string 字符串型
boolean 布尔型
undefined 未定义型
null 空类型
引用数据类型(复杂数量类型)
object 对象
function 函数
array 数组
数字类型(numder)
数字类型可以是: 整数, 小数, 正数. 负数,小数等
console.log(123) //整数,默认正整数
console.log(-123) //负数
console.log(9.9) //小数
console.log(Infinity) //特殊数值,无穷大
字符串类型(string)
单引号(’ '), 双引号(" "), 反引号(``)包裹的数据叫字符串
字符串拼接: 就是字符串加字符串
模板字符串: 内容拼接变量时,用 ${} 包住变量, 能够换行
注意事项:
无论单引号或是双引号必须成对使用
单引号/双引号可以互相嵌套,但是不以自已嵌套自已(口诀:外双内单,或者外单内双)
必要时可以使用转义符 \,输出单引号或双引号
console.log("程序员")
console.log(`颜值担当`)
console.log('我"爱"前端')//嵌套字符串
let res = '10' + '20'//'10' + '20'
console.log( res )//'1020'
布尔类型(Boolean)
它有两个固定的值 true 和 false,表示肯定的数据用 true(真),表示否定的数据用 false(假)
用于条件判断 true:条件成立 false:条件不成立
console.log(true)
console.log(false)
未定义类型(undefined)
未定义是比较特殊的类型,只有一个值 undefined。
只声明变量,不赋值的情况下,变量的默认值为 undefined
例如: let age; console.log(age); // 打印undefined
空类型(null)
null 表示 值为 空
null 和 undefined 区别:
undefined 表示没有赋值
null 表示赋值了,但是内容为空
数据类型总结
- (string) 字符串类型 ,用引号, 双引号, 反引号,包裹数据,例如: 数字, 特殊符号, 汉字. 反引号可以识别换行.(字体对应黑色)
- (number) 数字类型 包裹: 数字, 小数 不写引号 (字体对应蓝色)
- (boolean) 布尔类型 : 只有两个值: true(表示真的)和false(表示假的),(没有引号),(字体对应蓝色).
- (undfined) 未定义类型 : 只有一个值,还没有定义的意思,表示期房还没开始建设,什么都没有, (字体灰色)
- (null) 空类型, 只有一个值,定义值是空,表示毛坯房,还没装修,只有结构,空的. (字体灰色)
数据类型转换
转换为number类型
其他数据类型 转 Number
parseInt() : 转换整数
parseFloat() :转换小数
Number() : 其他数据类型转数字 (boolean,undefined,null)
注意点: 数据类型转换并没有改变原有变量的值,而是产生一个新的值
parseInt() : 转换整数
从左往右依次解析字符,遇到非数字字符停止解析,并且返回解析好的整数
let str = '10';
let num = parseInt(str);
console.log(num);// 10
console.log(str);// '10' 类型转换不改变原有变量的值,而是产生一个新的值
console.log(parseInt('123.1.1a'));//123
parseFloat() : 转换小数
规则与parseInt一致,唯一的区别就是可以识别第一个小数点
let str = '5';
let num = parseFloat(str);
console.log(num);
console.log(parseFloat('123.1.1a'));//123.1
Number() : 其他数据类型转数字
可以解析整数和小数
只要有任意非数字字符得到NaN
console.log(Number('6'));
console.log(Number('6.6'));
console.log(Number('123.1.a'));
布尔类型转数字会得到0 false和1 true
console.log(Number(true));//1
console.log(Number(false));//0
console.log(Number(undefined));//NaN
console.log(Number(null));//0
number类型特殊值NaN
NaN是number类型中一个特殊值
not a number:不是一个数字,表示错误的运算结果
console.log('张三'-100)//NaN
console.log( Number('程序员') )//NaN
NaN不能参与任何计算,结果一律为NaN
NaN实际场景: 开发中,一般不会接触到NaN,除非代码出bug了,数学计算出错
let num
console.log( num + 1 )忘记给num赋值,导致undefined 与 1 相加得到NaN
转换为string类型
let num = 200
String(数据)
console.log( String(num) )//'200'
console.log( String(true) )//'true'
console.log( String(undefined) )//'undefined'
console.log( String(null) )//'null'
变量名.toString()
如果是undefined与null,这种方式会报错
这种方式可以支持进制转换。 例如把 十进制转十六进制
console.log( num.toString() )//'200'
console.log( num.toString(16) )//'c8'
转换为boolean类型
Boolean(数据)
1.false: 有7种数据会得到false
0 -0 NaN '' undefined null false
2.true: 除false 7种之外的一切数据都为true
console.log( Boolean(0) )//false
console.log( Boolean(-0) )//false
console.log( Boolean(NaN) )//false
console.log( Boolean('') )//false
console.log( Boolean(undefined) )//false
console.log( Boolean(null) )//false
console.log( Boolean(false) )//false
隐式转换
当运算符两边的 ‘数据类型不一致’ 的时候,编译器会转成一致后运算
(1)转换数字 : 算术运算符 + - * / %
(2)转换字符串 : 连接符+ (+号两边只要有一边是字符串,此时+就是连接符)
(3)转换布尔: 逻辑非 !
1.转换数字 : 算术运算符
console.log( '100' - 10 )//90 Number('100') - 10
console.log( 1 + true )//2 1 + Number(true)
console.log( +'10' )//10 +数学正号 Number(10)
2.转换字符串 : 连接符
console.log( '1' + true )//'1true' '1' + String('true')
3.转换布尔 : !
console.log( !1 )//false !Boolean(1)
console.log( !undefined )//true !Boolean(undefined)
undefined与null区别
undefined : 未定义。 当变量只声明,但是没有赋值。此时默认值是undefined
大白话 : undefined相当于期房。 买了房,但是房子还没建出来。(未定义)
null : 有定义。 定义的值是空值。
大白话 : null相当于毛坯房。买了房,但是房子没住人,里面是空的。(空值)
相同点 : (1)值相等 (2)转布尔类型都是false
console.log( undefined == null )//true
console.log( Boolean(undefined) )//false
console.log( Boolean(null) )//false
不同点 : (1)数据类型不同 (2)转number类型值不同
console.log( undefined === null )//false
console.log( Number(undefined) )//NaN
console.log( Number(null) )//0