关于隐士类型转化的问题

一: 求表达式   ! + [ ] + [ ] + ! [ ]  的值是多少;

       ! [ ]              ! 后转化成boolean,先[ ].toString() => 空串;  再将空串转boolean 为false,最终true;

          + [ ]           加号两边不是字符串或数字,会将两边变成字符串或数字,因为前面没有,默认转成数字,[ ]转后是0; 

        +    如果前面有字符串,转化成字符串

              转化成是  ! 0 + ' ' + !false  

              优先级: !高于+; 

             +运算两边的转化问题:字符串有先; 不同类型一旦一方有字符串 ,则另一方转化成字符串,如果没有字符串,则双方都转化成数字3 + [ ];

             引用值转化成原始值自动调用自身的toString方法;  [1, 2,  3].toString()  ==> '1, 2, 3'  { }.toString( ) ==>  "[object Object]"

二: 求表达式   [ ] == false  的值是多少// true;    if( [ ]) { console.log(111) }  能输出吗?//能;为什么是false还能打印呢?

         == 两边的值有引用值时候,先把引用值转化成原始值,   

         == 两边的数据类型不一致时候,都要转化成number类型     

猜你喜欢

转载自www.cnblogs.com/dangdanghepingping/p/10132484.html