赞助
 自动转化和强制转化

        自动转化实际上是JavaScript程序执行中,遇到最多的转化方式
        必须非常非常非常清楚,自动转化的原则

        强制转化,是程序员人为的将数值或者变量存储的数据数值,转化为指定的数据类型
        所有的强制转化,都不会改变变量中存储的原始数据内容

        强制转化为布尔类型
            Boolean( 数值 / 变量 ) 
                转化原则与自动转化原则相同
            var int = 100;
            // 将变量int中存储的数据,强行转化为布尔类型
            console.log( Boolean(int) );
            // int中存储的原始数据不会受影响,还是100
            console.log( int );
            // 如果需要将int中存储的数据,就强行更改为布尔类型
            // 需要将 Boolean() 方法 执行结果赋值给 变量本身

            // 通过 Boolean() 方法,获取int中存储的数据100,转化为布尔类型true
            // 再将这个结果,赋值给int本身存储,
            // 此时 int 中存储的就是数值 true
            int = Boolean(int);
            console.log(int);
        强制转化为字符串类型
            String( 数值 / 变量 ) 
                转化原则与自动转化原则相同
                // 方法2 String( 变量 / 数据 )
                // 将变量中存储的数据 或者 输入的数据转化为字符串类型
                // 不会影响改变,变量中存储的原始数据内容

                // 将布尔类型false 转化为 字符串类型,结果也是false
                console.log( String(false) );

            变量.toString()
                将变量中存储的数据,强制转化为字符串类型
                转化原则,默认与自动转化原则相同
                如果是数值类型,转化为字符串类型,可以在()中设定转化进制
                ()中一般不写内容,只有数值转化需要设定特殊类型时,才定义()中的进制
                // 方法1: 变量.toString()
                // 将数值类型强行转化为字符串类型,并且可以设定转化的进制
                // 进制的范围是 2 - 36
                // 其他数据类型,也可以转化为字符串类型,只是没有进制效果了
                // 不会影响变量存储的原始数据

                // 数值类型可以设定进制
                var int1 = 100;
                console.log( int1.toString(8) );
                console.log( int1);

                // 其他类型转化为字符串,设定进制无效
                var bool1 = true;
                console.log( bool1.toString(8) );
                console.log( bool1 );

        其他类型转化为数值类型
            Number( 数值 / 变量 )
                转化原则与自动转化原则相同

            parseInt( 数值 / 变量  )    
                从数据的左侧起,获取整数部分
                如果起始部分不是整数语法规范,结果就是NaN
                    // 获取变量或者数值的整数部分
                    // 从数据的 左侧起 解析获取 符合整数的内容部分
                    // 与自动转化原则完全没有关系,是全新的转化原则

                    // 没有整数部分,执行结果是NaN
                    // console.log( parseInt( true ) );
                    // console.log( parseInt( false ) );
                    // console.log( parseInt( null ) );
                    // console.log( parseInt( undefined ) );
                    // console.log( parseInt( {name:'张三'} ) );
                    // console.log( parseInt( function fun(){console.log(123)} ) );

                    // 字符串,从字符串的左侧起,获取字符串的整数部分

                    // 整数字符串,没有任何影响,就是获取整数部分
                    // console.log( parseInt( '1000' ) );  

                    // 浮点数字符串,就是单纯的获取整数部分
                    // 直接获取,不是四舍五入
                    // console.log( parseInt( '1000.923456' ) );  

                    // 科学计数法,只会获取e之前的整数部分,不会获取其他内容
                    // console.log( parseInt( '2e3' ) ) ; 
                    // console.log( parseInt( '2.123e3' ) ) ; 
                    
                    // 如果是不符合数字规范的字符串
                    // 从左起获取整数部分

                    // 从左侧起,获取整数部分 结果 123
                    // console.log( parseInt( '123abc' ) );
                    // 从左侧起,获取整数部分 没有整数内容,结果是NaN
                    // console.log( parseInt( 'abc123' ) );

                    // 数组 获取 [ ] 内的数据内容,从左侧起,获取整数部分,如果不符合整数规范,结果就是NaN
                    // console.log( parseInt( [1,2,3,4,5] ) );
                    // console.log( parseInt( ['a',2,3,4,5] ) );
                    // console.log( parseInt( ['123a',2,3,4,5] ) );
                    // console.log( parseInt( [ {name:'张三'},2,3,4,5] ) );


            parseFloat( 数值 / 变量  )    
                从数据的左侧起,获取浮点数部分
                如果起始部分不是浮点数语法规范,结果就是NaN    
                // 获取浮点数部分,如果是整数,就获取整数部分
                // 从左侧起,获取符合浮点数语法规范内容部分
                // 如果左侧第一个内容,就不符合浮点数规范,结果就是NaN

                // 左侧第一个内容,就不符合,浮点数语法规范,结果都是NaN
                // console.log( parseFloat( true ) );
                // console.log( parseFloat( false ) );
                // console.log( parseFloat( null ) );
                // console.log( parseFloat( undefined ) );
                // console.log( parseFloat( {name:'张三'} ) );
                // console.log( parseFloat( function fun(){console.log(123)} ) );
                

                // 纯数值字符串
                // 可以正确获取数值部分,科学计数法,也可以正确解析为数值
                // console.log( parseFloat( '100' ) );
                // console.log( parseFloat( '100.123456' ) );
                // console.log( parseFloat( '2e3' ) );

                // 有符合数字规范的字符串
                // console.log( parseFloat( '100abc' ) );
                // console.log( parseFloat( '100.123abc' ) );
                // console.log( parseFloat( '2e3abc' ) );
                // console.log( parseFloat( 'abc123' ) );

                // 数组
                // console.log( parseFloat( [1,2,3,4,5] ) );
                // console.log( parseFloat( [100.123,2,3,4,5] ) );
                // console.log( parseFloat( ['abc',2,3,4,5] ) );       
                // 总结
                // 获取原则与 parseInt() 相似 
                // 只是 parseInt()   是从左起,获取符合整数规范的内容
                //      parseFloat() 是从左起,获取符合浮点数规范的内容\
                // parseInt() 和 parseFloat() 都不会改变变量中存储的原始数据内容
                // 关键区别,就是对于 浮点数的获取和科学计数法的获取
posted on 2020-11-19 00:28  Tsunami黄嵩粟  阅读(196)  评论(0编辑  收藏  举报