javascript中隱私型別轉換

灰灰在成長發表於2020-10-13
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>隱私型別轉換</title>
  </head>
  <body>
    <script>
      console.log(1 + "2"); // 因為+號右側為字串,所以將1轉化成字串再相加則為 "12"
      console.log(1 + 2); // 兩側都為數字,則相加則為運算子相加 ,輸出為 3
      console.log([] + 1); // 存在複雜型別,將[]轉化為字串則為"",輸入"1"
      console.log([] + "3"); //存在複雜型別,將[]轉化為字串"",輸出"3"
      console.log({} + "1"); //右側為字串,將左側轉化為[object Object],相加則輸出"[object Object]1"
      console.log([] + {}); // 兩側都是複雜型別,將呼叫[]轉為字串型別"",{}轉化為[object Object],輸出為"[object Object]"
      console.log([] + []); //兩側為複雜型別,[]轉化為"",輸出為""
      console.log({} + {}); // 兩側為複雜型別,{}轉化為[object Object],輸出位"[object Object][object Object]"
      console.log({} + []); //兩側為複雜型別,但是{}會被認為是一個空物件,直接執行0+[],輸出為0
      console.log([] == ![]); //![]輸出為false,[]換轉化為"",實質等於Number(false) === Number(""),輸出true
      console.log([] == []) //兩者記憶體地址不一樣,輸出false
      console.log({} == {}) //兩者記憶體地址不一樣,輸出false

      //複雜型別轉化Number,先呼叫valueOf(),在呼叫toString()
    </script>
  </body>
</html>

相關文章