JavaScript数据类型分类
- 简单数据类型(基本数据类型): null undefined number boolean string symbol
- 复杂数据类型: object
数据类型判断
六种基本数据类型浅析
-
Undefined
- 此类型只有一个值,undefined,未初始化的变量的值都是undefined
- typeof 未初始化/未声明的变量都返回 undefined
- 主要目的:用于比较,正式区分空对象指针与未经初始化的变量
-
Null
- 此类型也只有一个值,null,表示一个空对象指针
- 如果定义的变量用于将来保存对象,最好将其初始化为null
- 检测变量是否保存一个对象的引用:
if( car != null)
- undefined派生自null, null == undefined; //true
-
Boolean
- 只有两个字面量值,true,false
- 显式强制类型转换:
- Boolean() , !!(最常用), !
- 规则:假值/假值对象的布尔强转为false,其他为true
- 假值:undefined,null,“”,+0,-0,NaN,false
- 假值对象:不属于JS语法,外来的
- 隐式转换:
- if(...) for(...;...;...) while(...)do... while(...) ? :
- || && (短路操作)
对第一个操作数条件判断(不是布尔值进行ToBoolean强转)返回一个操作数
-
Number
- 浮点数:
- 如果小数点后没有数字,就会保存为整数(内存空间:浮点数=2*整数)
- 判断两数相等(误差范围):
if(! Number.EPSILON) {
Number.EPLISON = MATH.POW(2.-52);
}
function numberCloseEnoughToEqual(n1,n2){
return Math.abs(n1 -n2) < Number.EPSILON;
}
复制代码
- 数值范围:
- Number.MAX_VALUE , Number.MIN_VALUE
- 超出数值范围,自动转换成Infinity
- 判断是否有穷: isInfinity()
- NaN
- 表示一个本来要返回数值的操作数未返回数值的情况( 0/0)
- 任何涉及NaN的操作都返回NaN,任何操作符与NaN比较都是false
- NaN === NaN; //false NaN与任何值都不等
- isNaN() 不要用!!!只要不能转换为数值,都返回true!
isNaN("blue"); //true - Number.isNaN()
if(!Number.isNaN){
Number.isNaN= n => n!==n;
}
复制代码
- Infinity
- +0与-0
- -0,+0被认为相等
- -0字符串化返回0,“-0”数字化返回-0
- 判断-0:
n=Number( n );
return (n === 0) && (1/n === -Infinity)
- 强制类型转换:(见红宝书)
- + 与Number()相同
- Number()
true->1 false->0 null->0 undefined->NaN
string 忽略前导0,不忽略空格
""->0
格式之外->NaN - parseInt()
忽略前导空格
""->NaN
注意始终传入第二个进制参数 - parseFloat()
-
String
- 字符串是类数组,不过字符串不可变,数组可变
- 字符串反转 :var c=a.split("").reverse().join("");
- 强制类型转换:
- 除了null,undefined都有的toString()方法
- String()函数
-
Symbol
//待更新....
转载于:https://juejin.im/post/5cdebf7b6fb9a07ed440cf57