一、判断数据类型的两种方法:
1、 typeof (检测的数据)
var a = "hello world";
var b = 6.5;
// 检测a的数据类型
console.log(typeof(a)); //string
//检测a,b的数据类型
console.log(typeof(a),typeof(b)); // string number
2、instanceof 检测的数据
instanceof 是用来判断 A 是否为 B 的实例,表达式为:A instanceof B,如果 A 是 B 的实例,则返回 true,否则返回 false。
[] instanceof Array; // true
{} instanceof Object;// true
new Date() instanceof Date;// true
function Person(){};
new Person() instanceof Person;
[] instanceof Object; // true
new Date() instanceof Object;// true
new Person instanceof Object;// true
我们发现,虽然 instanceof 能够判断出 [ ] 是Array的实例,但它认为 [ ] 也是Object的实例,为什么呢?
我们来分析一下 [ ]、Array、Object 三者之间的关系:
从 instanceof 能够判断出 [ ].proto 指向 Array.prototype,而 Array.prototype.proto 又指向了Object.prototype,最终 Object.prototype.proto 指向了null,标志着原型链的结束。因此,[]、Array、Object 就在内部形成了一条原型链:
二、转换为数字类型(number):
数据类型 | Number() | parseInt() | parseFloat() | Math.round() | |
---|---|---|---|---|---|
string | 字符串内容为数字 | 数字 | 数字向下取整 | 数字 | 数字四舍五入 |
字符串内容不为数字 | NaN | NaN | NaN | NaN | |
boolean | 布尔值为true | 1 | NaN | NaN | 1 |
布尔值为false | 0 | NaN | NaN | 0 | |
undefined | NaN | NaN | NaN | NaN | |
null | 0 | NaN | NaN | 0 |
注: 要转换的数据都放在括号里
三、转换为字符串类型(string):
数据类型 | String() | .toString() |
---|---|---|
number | 内容为数字的字符串 | 内容为数字的字符串 |
boolean | 内容为true或false的字符串 | 内容为true或false的字符串 |
undefined | 内容为undefined的字符串 | 报错,不可用 |
null | 内容为null的字符串 | 报错,不可用 |
注:.tostring()的用法为: 要改变类型的数据.toString()
四、转换为布尔类型(boolean):
数据类型 | Boolean() | |
---|---|---|
number | 非0数字 | true |
0 | false | |
string | 非空字符串 | true |
空 | false | |
undefined | false | |
null | false |
注: 要转换的数据都放在括号里