一、 js中的数据类型的检测
1、使用typeof来判断数据类型
typeof 运算符把类型信息当作字符串返回,一般会返回下面几种类型
undefined
string
boolean
number
object -------对象或者null返回的是object
function
symbol
2、使用constructor 属性来判断数据类型
如果对象是 JavaScript Array 或 JavaScript Date ,我们就无法通过 typeof 来判断他们的类型,因为都是 返回 Object。constructor 属性返回所有 JavaScript 变量的构造函数。
"John".constructor // 返回函数 String() { [native code] }
(3.14).constructor // 返回函数 Number() { [native code] }
false.constructor // 返回函数 Boolean() { [native code] }
[1,2,3,4].constructor // 返回函数 Array() { [native code] }
{name:'John', age:34}.constructor // 返回函数 Object() { [native code] }
new Date().constructor // 返回函数 Date() { [native code] }
function () {}.constructor // 返回函数 Function(){ [native code] }
举个例子:
<p id="demo"></p>
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.getElementById("demo").innerHTML = isArray(fruits);
function isArray(myArray) {
return myArray.constructor.toString().indexOf("Array") > -1;
}
</script>
3、使用instaceof 属性来判断数据类型
正因为typeof遇到null,数组,对象时都会返回object类型,所以当我们要判断一个对象是否是数组时或者判断某个变量是否是某个对象的实例则要选择使用另一个关键语法instanceof, instanceof只能用来判断对象和函数,不能用来判断字符串和数字等,返回布尔值。
var a=new Array();
alert(a instanceof Array);//会返回true,
一、 js中的数据类型转换
1、显式数据类型转换(数据类型)
- Number转换:
var a = “123”;
a = Number(a);
a) 如果转换的内容本身就是一个数值类型的字符串,那么将来在转换的时候会返回自己。
b) 如果转换的内容本身不是一个数值类型的字符串,那么在转换的时候结果是NaN.
c) 如果要转换的内容是空的字符串,那以转换的结果是0.
d) 如果是其它的字符,那么将来在转换的时候结果是
- parseInt()
var a = “123”;
a = parseInt(a);
a) 忽略字符串前面的空格,直至找到第一个非空字符,还会将数字后面的非数字的字符串去掉。
b) 如果第一个字符不是数字符号或者负号,返回NaN
c) 会将小数取整。(向下取整)
- parseFloat();//浮点数(小数)
与parseInt一样,唯一区别是parseFloat可以保留小数。
2、显式数据类型转换(字符串类型)
- String():
var a = 123;
a = String(a);
- toString()的方法来进行转换(包装类)
var a = 123; a = a.toString();
undefined,null不能用toString。
3、隐式类型转化
- 转number
var a = “123”;
a = +a;
加减乘除以及最余都可以让字符串隐式转换成number.
- 转boolean
var a = 123;
a = !!a;
- 转string
var a = 123;
a = a + “”;