栈内存&&堆内存

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      // 基本数据类型
      //String Number Boolean Null Undefined
      //引用数据类型
      //Object

      // js中的变量都是保存到栈内存中的
      // 变量在栈内存中存储
      // 值与值之间是独立存在的 修改一个变量的值不会影响其他的变量

      // 对象在堆内存中存储
      // 画图显示
      var a = 123
      var b = a
      a++
      console.log('a = ' + a) //124
      console.log('b = ' + b) //123

      var obj = new Object()
      //obj作为一个变量保存在栈内存中 它的值是一个地址类似0x123
      //对象在堆内存中存储的是一个0x123地址
      //现在往对象中添加属性
      obj.name = '陈恩伊'
      var obj2 = obj
      //   修改了name属性
      obj.name = '仙女本仙'
      //obj和obj2这两个变量保存的是同一个对象的地址类似0x123
      console.log(obj.name) //仙女本仙'
      console.log(obj2.name) //仙女本仙'
      //   =====================================
      // 比较变量的栈内存存储 && 对象的堆内存存储
      var a = 10
      var b = 10
      console.log(a == b) //true
      //对象字面量的形式创建了一个对象
      var a = {}
      a.name = '陈恩伊'
      console.log(a)
      var b = {}
      b.name = '陈恩伊'
      console.log(b)
      console.log(a == b) //false  由于堆内存中的地址不一样所以是false
    </script>
  </body>
</html>