javascript中隐私类型转换

<!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>


版权声明:本文为weixin_44477373原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。