var a=5；a=6；a的地址变了没有啊？
var a=5；a=6；a的地址变了没有啊？
答案是“不知道”。
如果这两段代码如你所写，
```
var a=5;a=6;
```
那么没变，因为目前任何 js 引擎都会把这段代码直接优化编译为 `var a=6;`。
如果 `a` 先初始化为 5，在后面的程序中一直使用这个 `5`。然后在某一步又被重新赋值为 `6`。 那么 `a` 的地址变了吗？
这也得分情况，如果是在一个短小的函数中，也许 `a` 根本就没有内存地址，而是直接在寄存器里面进行运算。
即使 `a` 在内存中分配，也不能保证 `a` 的地址是不变的，因为在 GC 阶段要进行新生代内存区域交换和老生代内存碎片整理。
至于通常用来对比 `var` 和 `const` 的说法，“`const` 只是保证了内存地址不变，而不能保证引用的数据不变”，这个只是民间的说法，规范里面从来没有这么说。之所以这么说，是使用了 C++ 的概念来说明 `const` 的常量性质。
如果从 JavaScript 使用者的角度将，我们可以认为 `const` 定义的变量(常量)地址指向是不变的，但是如果从引擎和底层的角度讲，我们不能想当然的认为常量的地址是不变的。