其他数据类型自动转化为数值类型

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 其他数据类型自动转化为数值类型
        // 在进行 非加法 算术运算时 其他数据类型类型会自动转化为数值类型
        // 加法 如果有字符串参与 会执行 字符串拼接
        // 如果 加法 是 非字符串的其他数类型,也会自动转化为数值类型

        // 总之,你要注意 + 加法 和 字符串的问题

        // 任何有 NaN参与的运算,结果都是NaN

        // 转化原则
        //  布尔类型 true  ---> 1
        //  布尔类型 false ---> 0
        //  null          ---> 0
        //  undefined     ---> NaN   只要有undefined参与的运算,结果都是NaN

        // 字符串  特别注意,如果是+加号,是字符串拼接操作
        //    情况1 : 符合数字规范的字符串  纯数字字符串,科学计数法字符串
        //            可以 转换为对应数值的字符串
        //            转化为对应的字符串内容
        //            字符串中,可以带有符号,会转化为相应的负数来参与运算

        //    情况2 : 不符合数字规范的字符串 有其他不符合数字规范的内容
        //            统统转化为 NaN 运算结果也是 NaN

        // 三种特殊情况
        // 数组,对象,函数
        //     如果是 + 加法,执行字符串拼接操作,转化原则,参看字符串拼接转化原则
        //     如果是 其他运算形式 统统转化为 NaN 执行结果也是NaN


        // 布尔类型true 转化为1
        var int1 = 100 - true;
        console.log(int1);

        // 布尔类型false 转化为0
        var int2 = 100 - false;
        console.log(int2);

        // null 转化为0
        var int3 = 200 - null;
        console.log(int3);

        // undefined 转化为 NaN
        // 任何有NaN参数与的运算,结果都是NaN
        var int4 = 200 - undefined;
        console.log(int4);


        // 字符串情况1,符合数字规范的字符串
        // 转化为数值 -100 参与运算
        var int5 = 100 - '-100';
        console.log(int5);

        // 字符串情况1,符合数字规范的字符串
        // 转化为浮点数 100.123
        // 计算结果,要考虑有可能出现误差/精度丢失效果
        var int6 = 100 - '100.123';
        console.log(int6);

        // 字符串情况1,符合数字规范的字符串
        // 2e3转化为数值 2000,参与运算        
        var int7 = 100 - '2e3';
        console.log(int7);


        // 字符串情况2,有不符合数字规范的内容

        var int8 = 100 - '北京';
        var int9 = 100 - '100北京';
        var int10 = 100 - '北京100';
        var int11 = 100 - '2e3北京';
        var int12 = 100 - '北京2e3';
        console.log(int8);
        console.log(int9);
        console.log(int10);
        console.log(int11);
        console.log(int12);


        // 特殊情况

        // 数组
        var arr = [1,2,3,4,5];

        var int13 = 100 + arr;
        var int14 = 100 - arr;
        console.log(int13);
        console.log(int14);

        // 对象
        var obj = {name:'张三'};
        var int15 = 100 + obj;
        var int16 = 100 - obj;
        console.log(int15);
        console.log(int16);

        // 函数
        function fun(){
            console.log(123);
        }

        var int17 = 100 + fun;
        var int18 = 100 - fun;
        console.log(int17);
        console.log(int18);

    </script>
</body>
</html>

右侧打赏一下 代码改变世界一块二块也是爱
原文地址:https://www.cnblogs.com/ht955/p/14002907.html