1)、判断数据类型
1. typeof判断
typeof '123'; // "string" 字符串
typeof true; // "boolean" true
typeof 123; // "number" 数字
typeof [1,2,3]; // "object" 数组
typeof {'1': 2}; // "object" 对象
typeof null; // "object" null
typeof new Date(); // "object" 日期
typeof no; // "undefined" 未定义
typeof function() {}; // "function" 函数
可以看出 typeof能够得到数据的类型,但对于引用数据类型,不能得到具体类型。
2. constructor判断
constructor 属性返回所有 JavaScript 变量的构造函数。
'123'.constructor; // String() { [native code] }
true.constructor; // Boolean() { [native code] }
123.constructor; // Number() { [native code] }
[1,2,3].constructor; // Array() { [native code] }
{'1': 2}.constructor; // Object() { [native code] }
null.constructor; // TypeError: Cannot read property 'constructor' of null
new Date().constructor; // Date() { [native code] }
no.constructor; // ReferenceError: no is not defined
function() {}.constructor; // Function(){ [native code] }
自定义一个类型判断函数
function typeOf(data) {
try{
return data.constructor.toString().toLowerCase().match(/[a-z]+/g)[1];
} catch(e) {
return typeof data;
}
}
typeOf('123'); // "string" 字符串
typeOf(true); // "boolean" true
typeOf(123); // "number" 数字
typeOf([1,2,3]); // "array" 数组
typeOf({'1': 2}); // "object" 对象
typeOf(null); // "object" null
typeOf(new Date()); // "date" 日期
typeOf(no); // Uncaught ReferenceError: no is not defined 报错no不存在,函数无法执行
typeOf(function() {}); // "function" 函数
2)、类型转换
-
转字符串:String()、number.toString()、toExponential()、toFixed()、toPrecision()
转换为指数形式 保留小数 格式化为指定的长度
toExponential() 保留小数点后位数
toPrecision() 保留有效数字位数typeof String(123); // "string" typeof (123).toString(); // "string" (123456).toExponential(0); // "1e+5" (123456).toExponential(3); // "1.234e+5" (123456).toPrecision(3); // "1.23e+5" (1.23456).toFixed(4); // "1.2346"
支持数字、布尔、date对象、数组。 普通对象将被转换成"[object Object]"
-
转数字:Number()、parseInt()、parseFloat()、一元运算符+
Number("3.14"); // 3.14 parseInt("3.14"); // 3 parseFloat("3.14"); // 3.14 Number("3.14abc"); // NaN parseInt("3.14abc"); // 3 parseFloat("3.14abc"); // 3.14 '01' + '01'; // '0101' +'01' + +'01'; // 2 Number(true); // 1
-
转布尔 Boolean()
Boolean(NaN); // false Boolean(''); // false Boolean(0); // false Boolean(-0); // false Boolean(null); // false Boolean(undefined); // false Boolean(false); // false Boolean('false'); // true Boolean([]); // true Boolean({}); // true
false: 0、-0、null、undefined、NaN、false
true: other