js中数据类型有哪些?
原始数据类型又分为:
基本类型(简单类型),值类型:number、string、boolean
复杂类型(引用类型):object
空类型:undefined、null
1. number 数字类型 (整数,小数)
2. string 字符串类型 (值通常用’’ 或者""括起来的)
3. boolean 布尔类型 (值只有两个: true false)
4. null 空类型,值只有一个:null,一个对象指向了空,此时就可以赋值为null,如var nll = null;
5. undefined 未定义,值只有一个:undefined
什么情况下会是undefined?
①变量声明了,但是没有赋值,结果是undefined
②函数或者方法没有明确的返回值,如果接收了,结果也是undefined
6. object 对象
注意:
- js中不能用小数验证小数,例在js中如0.1+0.2 =0.30000000000000004不等于0.3。
- 浮点数相加不能直接算出正确的结果,解决办法:把浮点数变成整数
- 不能用NaN(not a number 不是一个数字)去判断是不是NaN,使用 isNaN()函数-------is not a number 判断变量是不是 不是一个数字。判断变量是不是数字类型,不是数字类型返回true,是数字类型返回false。其中undefined类型变量 + 任意数字= NaN。
- 值类型之间传递,传递的是值,值在栈上;引用类型之间的传递,传递的是地址(引用),对象在堆,地址在栈。
- 获取变量的数据类型:typeof typeof 变量名 / typeof(变量名)
类型转换
1.转换成字符串类型
①变量名.toString()
②String(变量名)-------强制转,如果没有意义的变量转换成字符串类型,要通过String()来转换,toString()会报错,比如:undefined和null
③通过字符串的拼接
var num = 10;
console.log(num + ‘’);
2.转换成数值类型
①Number() 可以把任意值转换成数值,如果要转换的字符串中有一个不是数值的字符,返回NaN
②parseInt() 如果第一个字符是数字会解析直到遇到非数字结束,如果第一个字符不是数字或者符号就返回NaN
③parseFloat() 把字符串转换成浮点数,parseFloat()和parseInt非常相似,不同之处在与parseFloat会解析第一个. 遇到第二个.或者非数字结束
如果解析的内容里只有整数,解析成整数。
④通过+ -0
如: var str = ‘500’;
console.log(+str);
console.log(-str);
console.log(str - 0);
3.转换为bool类型-----------Boolean(变量名 或者值)
0,NaN, ‘’, null,undefined会转换为false,其他都为true
如: console.log(Boolean(’’));//false
console.log(Boolean(‘0’)); //true