(JavaScript-原生)数据类型转换及检测

(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来进行判断了。



猜你喜欢

转载自blog.csdn.net/qq_39872652/article/details/81023369