基本数据类型
== 是指的是我们存储在内存中的数据的类型
== 我们分为两大类:基本数据类型和复杂数据类型
基本数据类型 - ES5
1 数值类型(number)
== 一切数字都是数值类型
== 一个特殊的数字,非数字:NaN
2 字符串类型(string)
== 被引号包裹的数据(可以是单引号也可以是双引号,要成对就可以)
被 ' ', " " 包裹的数据 就是字符串类型
被引号包裹的数据就是字符串类型
3 布尔类型(boolean)
== 只有两个:true 或 false
4 null类型(null)
== 只有一个,就是null,表示空的意思
5 undefined类型(undefined)
== 只有一个,就是undefined,表示没值的意思
注意,如果定一个了一个变量,但是没有赋值,变量里面存储的数据是什么?
undefined
复杂数据类型
== 数组
== 对象
== ....
null 和 undefined 的区别
null是一个表示"无"的对象,转为数值时为0<br>
undefined是一个表示"无"的原始值,转为数值时为NaN
当声明的变量还未被初始化时,变量的默认值为undefined
null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象
undefined表示 “缺少值”,就是此处应该有一个值,但是还没有定义。典型用法 是:
1. 变量被声明了,但没有赋值时,就等于 undefined
2. 调用函数时,应该提供的参数没有提供,该参数等于 undefined
3. 对象没有赋值的属性,该属性的值为 undefined
4. 函数没有返回值时,默认返回 undefined
null表示“没有对象”,即该处不应该有值。典型用法是:
1. 作为函数的参数,表示该函数的参数不是对象
2. 作为对象原型链的终点
判断数据类型 : 使用typeof 关键字来进行判断
== 语法:typeof 数据
== 语法:typeof(数据)
== 结果:是一个表示数据类型的字符串('number'/'string'/'boolean'/'undefined'/'null')
var n = 100
var result = typeof(n)
console.log(result)
数据类型转换
*其他类型转换成数值类型*
比如:数值类型转字符串,字符串转布尔值,布尔值转数字等
其他数据类型转数值类型 - 我们自己调用方法显式转换
1 Number(数据)
== 可以把一个变量强制转换成数值类型,返回数据转换成的具体的数字
== 可以转换小数
== 可以转换布尔值
== 可以转换null
== 遇到不可转换的都返回NaN
2 parseInt(数据) - 取整
== 可以把一个变量强制转换成数值类型,返回数据转换成的具体的数字
== 从第一位开始检查,是数字就转换,直到一个不是数字的内容
== 开头不是数字,那么直接返回NaN
== 不认识小数点,只能保留整数
3 parseFloat(数据)
== 可以把一个变量强制转换成数值类型,返回数据转换成的具体的数字
== 从第一位开始检查,是数字就转换,直到一个不是数字的内容
== 开头不是数字,那么直接返回NaN
== 认识一次小数点
其他数据类型转数值类型 - 隐蔽的浏览器自动遇到一些特殊情况给我们转换
4 除了加法以外的数学运算符
== 加法以外的数学运算要求两边都是数字
== 浏览器就自动给我们吧运算符两边的转数字,再参与运算
== 浏览器内部会调用Number帮我们偷偷的转
== 加法没有这个能力
5 使用加法运算
== 在js里面,+ 有两个含义
== 如果 + 两边都是数值类型就是表示 做加法运算
== 如果 + 两边有任意一边是字符串,就会把两边都自动转换字符串,然后进行字符串拼接
特殊情况
true 转number类型 结果为 1
false null 转number类型 结果为 0
undefined 转number类型 结果为 NaN
'' 空字符串 转number 结果为 0
*其他类型转换成字符串类型*
1 变量.toString()
== 就可以把变量转换成字符串类型
== 有一些数据类型不能使用这个方法,比如 undefined和null,会报错
2 String(变量)
== 所有数据类型都可以转换成字符串
*其他类型转换成布尔类型*
语法: Boolean(变量)
var num = 100.11;
var str = 'hello'
console.log(Boolean(num)); 控制台输出结果为 true
console.log(Boolean(str)); 控制台输出结果为 true
空字符串 也为 true
0,null和undefined 为false
== 在js中,只有 "",0,null,undefined,NaN,这些返回的转换结果是false
== 其余的数据转换结果都是true