1. 数据类型
(5个基本数据类型)number string Boolean undefined null 和一个引用类型 objectjavascript
2. 判断类型(typeof)html
7种:number string Boolean undefined object function symbol https://www.cnblogs.com/sker/p/5474591.htmljava
3. 类型转换函数
(1)强制转换测试
var test = parseInt(“blue”); //returns NaN var test = parseInt(“1234blue”); //returns 1234 var test = parseInt(“22.5”); //returns 22 var test = parseFloat(“1234blue”); //returns 1234 var test = parseFloat(“22.5”); //returns 22.5
(2)隐式转换(隐式转换一般发生在运算符加减乘除,等于,还有小于,大于。。。)spa
console.log(10+'20') //2010 console.log(10-'20')//-10 number console.log(10-'one') //NaN not a number console.log(10-'101a') //NaN console.log(10*'20') //200 number console.log('10'*'20') //200 number console.log(20/'10') //2 number console.log('20'/'10') //2 number console.log('20'/'one') //NaN
==
:等同,比较运算符,两边值类型不一样的时候,先进行类型转换,再比较;prototype
===
:恒等,严格比较运算符,不作类型转换,类型不一样就是不等;code
Object.is()
是ES6新增的用来比较两个值是否严格相等的方法,与===
的行为基本一致。regexp
Object.is()
,其行为与===
基本一致,不过有两处不一样:htm
+0 === -0 //true NaN === NaN // false Object.is(+0, -0) // false Object.is(NaN, NaN) // true
什么时候使用==、===: 用 if(obj.a==null) 代替 obj.a===null || obj.a===undefined,其余状况用===。
关于== :
字符串和数字比较时,字符串转数字
数字与布尔比较时,布尔转数字(一、0)
字符串和布尔比较时,二者转数字
console.log(undefined==null) //true console.log('0'==0) //true 字符串转数字 console.log(0==false) //true 布尔转数字 console.log('0'==false) //2个都转成数字 console.log(null==false) //false console.log(undefined==false)//false
关于===:
类型不一样:false
类型相同:NaN不等于NaN
new Object 不等于 new Object
4. 类型检测
typeof 不管引用的是什么类型的对象,它都返回 “object”。
这就须要用到instanceof来检测某个对象是否是另外一个对象的实例。
instanceof
运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype
属性。
语法:object instanceof constructor
参数:object(
要检测的对象.)constructor(
某个构造函数)
5. 封装函数实现类型判断
function type (obj) { var cache = { '[object Number]': 'number', '[object Array]' : 'array', '[object Object]' : 'object', '[object String]' : 'string', '[object Boolean]' : 'boolean', '[object Null]' : 'null', '[object Undefined]' : 'undefined', '[object Function]' : 'function', '[object RegExp]' : 'regexp' } return cache[Object.prototype.toString.call(obj)]; }
6. 内置函数(数据封装类对象)
Number String Boolean Object Array Function Date RegExp Error