JS隐式数据类型转换

隐式数据类型转换

显式转换:程序员主动调用语法去转换数据类型,语义更加明确
隐式转换:运算符两边数据类型不一致,编译器自动帮我们转换一致在计算,这是js的语法特点

隐式转换
1.转成string类型:+号两边如果有一边是字符串,则会把另一边转换成字符串,然后进行拼接
2.转成number类型:以下几种运算符会将任何数据转换成number类型再运算,如果无法转换则为NaN
数学正号 : +num
当 +/-号写在一个变量名的前面,此时表示数学的正/负数
自增自减(++ --)
算术运算符(+ - * / %)
比较运算符(> < >= <= == != === !==)
说明:全等与不全等会先比较值(此时会隐式转换再比较),然后再比较数据类型
3.转成boolean类型:逻辑非(!)会将任何数据转为boolean类型再运算
4.+号有三种含义:数学正负号(转成number)、算术运算符(转成number)、字符串连接符(转成string)

 <script>
        /* 
        1. 显式转换 : 程序员主动使用语法来转换(阅读性最高)

        2. 隐式转换 : 如果运算符两边数据类型不一致,编译器偷偷的帮我们转成一致再计算。
            (1)其他数据类型转number :
                数学正号 : +num
                自增自减: ++ --  
                算术运算符: + - * / %
                关系运算符 : > < >= <=
            (2)其他数据类型转string : +
            (3)其他数据类型转boolean : !
        
         */

        console.log('100' - 1);			// Number('100') - 1 = 100 - 1 = 99

            //1.其他数据类型转number :
            //    数学正号 : +num
            //    自增自减: ++ --  
            //    算术运算符: + - * / %
            console.log(+'10');			// Number('10')
            
            console.log('张三' - 100);	// Number('张三') - 100 = NaN - 100 = NaN
            console.log(10 - '1');		// 10 - Number('1') = 10 - 1 = 9
            
            //2. 其他数据类型转string : +
            console.log('1' + 1);		//'1' + String(1) = '1' + '1' = '11'

            /* 
            容易混淆点 : 把算术运算符 + 转换规则  与 连接符 + 转换规则搞混淆
             */
            console.log('1' + true);	//1true 连接符 ‘1’ + String(true) = '1' + 'true' = '1true'
            console.log(1 + true);		//2 算术运算符  1 + Number(true) = 1 + 1 = 2

            console.log(1 + undefined);	//NaN 算术 1 + Number(undefined) = 1 + NaN = NaN
            console.log(1 + null);		//1 算术 1 + Number(null) = 1+ 0 = 1
            console.log('1' + null);	//1null 连接 '1' + String(null) = '1' + 'null' = '1null'
            
            //其他数据类型转boolean : !
            //取反 : true变false false变true
            console.log(!1);			//(1)!Boolean(1) = !true = false
            console.log(!!'');			//(1)!!Boolean('') (2)!!false (3)!true = false
            
    </script>
// 经典js面试题
console.log(undefined + null);
console.log(undefined - null);
console.log(undefined - undefined);
console.log(null - null);

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值