js中,全部的变量的赋值、修改等,都是不是对内存的修改,是修改变量的指向。
引出一些结论:
1,var/let定义的一个指的是变量或者是变量名
2,变量全部都是指向内存的,不要习惯认为就是某个内存的值(没人会告诉你两者一定就会相等),得从根本上去看
3,改变变量的值,就是改变变量的指向的内存(多出的内存不就成了垃圾?可以这么说,V8引擎的GC回收会自动处理没有被指向的内存,不会立刻消失,所以会出现内存再函数运行完后还能用,作用域等页不会立刻消失)
4,什么时候是修改变量呢,什么时候是修改内存呢?首先要更换本有思维,比如对象属性也只是变量,也就是说内存可以是存一个数据值,也可以存变量(这里就可以解释如果存的只是数据,那么就无法修改数据的,只能更改变量指向内存,而不是修改指向内存的数据,你会发现String,Number类型也是这样的,它的编译器设计让它是这种形式,从编译器底层C的角度让设计成这样)。
修改变量:直接对变量就进行赋值,修改操作,但要理解对对象的属性就不是对上级变量修改;
修改内存:对保存变量的内存的变量进行增删
(这里感觉描述不是很好,后面继续补充)