1. 程式人生 > >關於隱士型別轉化的問題

關於隱士型別轉化的問題

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

       ! [ ]              ! 後轉化成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型別