数组和对象,typeof,类型转换
1,数组
遍历数组:
2,对象
键--->值一一对应
-----------------------------------------------------------------------------------------------------------
typdof,返回数据类型,一共可以返回number,string,boolean,object,undefined,function
什么样的值能返回Object呢?
所以一共有Object,数组和null
那什么样的数组返回undefined?
undefined返回undefined
--------------------------------------------------------------------------------------------------------------
先看下面的
1,显式类型转换
(1)Number
转换成数字
(2)parseInt
parseInt也可以根据进制来转换
以目标进制为基底转换为10进制
就是把“10”当做16进制,然后转换成10进制(radix 2-36)
把“3”当二进制转换成10进制,这显然是错误的,2进制里没有3
parseInt还有一个作用就是从前往后读,遇到不是数字位的就截断
(3)parseFloat
转换成浮点类型
除了第一个是.的字符,其他都截断
(4)String
转换成字符串
放进去啥(符合语法规范)都是字符串
(5)Boolean
转换成boolean值
(6)toString
转换成字符串,只是用法不太一样
但是要注意:
undefined和null不能使用toString
报错
报错
toString还有一个用法
以10进制为基底转换为目标进制
如上:把10(10进制)转换为8进制
现在把10101010(2进制)转换为16进制
----------------------------------------------------------------------------------------------------------------------------
隐式类型转换(内部调用的其实都是显式的方法)
(1)isNaN()
判断数值是不是NaN
这是因为isNaN内部调用的是Number()方法,先用Number()转换变量,然后再判断是否和NaN相等
(2)++,--,+/-正负
++,会先调用Number()将变量转换为Number,然后再++(--同理)
+(正号),调用的是Number
-(负号),同理
(3)+(加号)
+,如果+两边有一个是字符串,调用String,那么就会把两个都变成字符串
(4)*,/,%
调用的都是Number
(5),&& ,|| ,!
有转换为boolean的部分
(6)>,<,>=,<=
会将‘2’变为数字
(7)
==,!=
(8)
一个一个比较
(9),===绝对相等,!==,绝对不等
不会发生类型转换
(10)typeof返回值都是String类型
下面是自己写的输出类型:
function outType(obj) {
if( typeof(obj) != 'object'){
if(typeof(obj) == 'function')
console.log('object');
else
console.log(typeof(obj));
}
else if(Object.prototype.toString.call(obj) == '[object Object]'){
console.log('object');
}
else if(Object.prototype.toString.call(obj) == '[object Array]'){
console.log('Array');
}
else if(Object.prototype.toString.call(obj) == '[object Number]'){
console.log('number Object');
}
}
下一篇: 各类排序算法总结(Java代码实现)