(JavaScript-原生)数据类型转换及检测
<script>
window.onload = function () {
'use strict'
/**
* JavaScript中的数据类型转换
* @author 刘杰
* @version 1.0
* JavaScript中的数据类型
* 基本类型:
* -Number、String、Boolean、Null、Undefined
* 引用类型:
* -Object(因为在JavaScript中(对象Object、函数function、数组[]、正则/^$/)都属于对象的范畴)
*
*/
// 一、转为Number
// String -> Number
/*1.纯整数字字符串*/
let str_1 = "123";
let num_1 = Number(str_1);
console.log(num_1);// 打印123
console.log(typeof num_1);// 打印number
/*2.纯小数字符串*/
let str_2 = "1.23";
let num_2 = Number(str_2);
console.log(num_2);// 打印1.23
console.log(typeof num_2);// 打印number
/*3.非纯数字字符串*/
let str_3 = "1s2";
let num_3 = Number(str_3);
console.log(num_3);// 打印NaN
console.log(typeof num_3);// 打印number
/*4.将空字符串转换为Number类型*/
console.log(Number(''));// 打印0
console.log(typeof Number(''));// 打印number
// Boolean -> Number
/*将布尔值true转换为Number类型*/
let num_4 = Number(true);
console.log(num_4);// 打印1
console.log(typeof num_4);// 打印number
/*将布尔值false转换为Number类型*/
let num_5 = Number(false);
console.log(num_5);// 打印0
console.log(typeof num_5);// 打印number
// Null转换为Number
let num_6 = Number(null);
console.log(num_6);// 打印0
console.log(typeof Number(null));// 打印number
// Undefined转换为Number
let num_7 = Number(undefined);
console.log(num_7);// 打印NaN
console.log(typeof num_7);// 打印number
// 二、转为String
/*将数字转换为字符串*/
let number_1 = 1.23;
let string_1 = String(number_1);
console.log(string_1);// 打印1.23
console.log(typeof string_1);// 打印String
/*将布尔值转换为字符串*/
let string_2 = String(true);
console.log(string_2);// 打印true
console.log(typeof string_2);// 打印String
// 三、转为Boolean
/*将字符串转换为Boolean*/
let bol_1 = Boolean("好好学习,天天向上");
console.log(bol_1);// 打印true
console.log(typeof bol_1);// 打印boolean
console.log(Boolean(''));// 打印false
console.log(typeof Boolean(''));// 打印boolean
/*将数字0转换为Boolean*/
let bol_2 = Boolean(0);
console.log(bol_2);// 打印false
console.log(typeof bol_2);// 打印boolean
/*将非0数字转换为Boolean*/
let bol_3 = Boolean(1);
console.log(bol_3);// 打印true
console.log(typeof bol_3);// boolean
/*将NaN转换为Boolean*/
let bol_4 = Boolean(NaN);
console.log(bol_4);// 打印false
console.log(typeof bol_4);// 打印boolean
/*将null转换为Boolean*/
let bol_5 = Boolean(null);
console.log(bol_5);// 打印false
console.log(typeof bol_5);// 打印boolean
/*将undefined转换为Boolean*/
let bol_6 = Boolean(undefined);
console.log(bol_6);// 打印false
console.log(typeof bol_6);// 打印boolean
// 四、检测引用数据类型的类型
let obj = {
name: 'LJ'
};
console.log(obj);// 打印{name: "LJ"}
console.log(typeof obj);// 打印object
let fun = function() {
};
console.log(fun);// 打印ƒ () {}
console.log(typeof fun);// 打印function
let arr=[1,2,3];
console.log(arr);// 打印(3) [1, 2, 3]
console.log(typeof arr);// 打印object
console.log(arr instanceof Array);// 打印true
let reg = /^[0-9]+$/;
console.log(reg);// 打印/^[0-9]+$/
console.log(typeof reg);// 打印object
console.log(reg instanceof RegExp);// 打印true
console.log(typeof null);// 打印object
console.log(null instanceof Object);// 打印false
}
</script>
总结:综上所述在JavaScript中
-1).基本数据类型有5个,引用数据类型有1个
-2).特别注意:
将String类型转换为Number类型的时候
非数字字符串 -> NaN
空字符串 -> 0
将Boolean类型转换为Number类型的时候
true -> 1
false -> 0
将Null类型转换为Number类型的时候
null -> 0
将Undefined类型转换为Number类型的时候
undefined -> NaN
将0转换为Boolean类型的时候
0 -> false
将NaN转换为Boolean类型的时候
NaN -> false
将null转换为Boolean类型的时候
null -> false
将undefined转换为Boolean类型的时候
undefined -> false
typeof判断null的数据类型为object
instanceof判断null的数据类型为Object时为false
##至于为什么null的类型出现这样的歧义,请看此链接 -> 为什么typeof检测null为object但是instanceof的结果为false(null表示空对象的引用但其不是真正意义上的Object类型的实例,因为它不是以Object为原型创建的)所以不属于Object类型的范畴。
-3).总体来说对于基本数据类型:通过String()、Number()、Boolean()这三个方法可以分别将诸多元素转换为对应类型的值,只不过特殊的需要记忆,已经在第二点出列出。并且基本数据类型通过typeof就可以检测出来,function也可以被typeof检测出来。但是其他的向数组、正则等就必须要使用instanceof来进行判断了。