JavaScript原始类型
有五种:undefined,null boolean string number object(对象类型)
隐式转换
- ==号会进行隐式转换
- 类型不同的转换:object == number|string尝试对象转为基本类型
- 严格等于===,会先判断两边的类型
- 一般来说new object === new object返回false
包装对象
当你对字符串使用string.length时候,js会临时创建一个包装对象,内部的值和string一样,在使用完毕后会销毁。说以对数组,num使用toString的过程也和上述过程类似
类型检测
- typeof(用于基本类型) 遇到null失效,可以使用严格===判断null
但是对数组 - 用instanceof(判断数组和对象)
- 查询原型链中是否含有右边的类型
- 在不同的window或者iframe之间,不能使用instanceof。
- 使用Object.prototype.toString也可以判断
数据类型判断习题
请在index.html文件中,编写arraysSimilar函数,实现判断传入的两个数组是否相似。具体需求:
-
数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的。
-
数组的长度一致。
-
类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, window.
当以上全部满足,则返回"判定结果:通过",否则返回"判定结果:不通过"。
题目解析
- 首先看两者长度是否一致
- 看两者是否为数组
- 方法:通过instanceof判断 date,window,array类型,通过typeof判断原始数据类型
- 使用空对象将类型的数量保存起来
- 通过对面对量内类型数量,来确定是否相似