🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
~~~ /* * JS中的内存分为堆内存和栈内存 * 堆内存:存储引用数据类型值(对象:键值对 函数:代码字符串) * 栈内存:提供JS代码执行的环境和存储基本类型值 * * [堆内存释放] * 让所有引用堆内存空间地址的变量赋值为null即可 * (没有变量占用这个堆内存了,浏览器会在空闲的时候把它释放掉) * * [栈内存释放] * 一般情况下,当函数执行完成,所形成的私有作用域(栈内存) * 都会自动释放掉(在栈内存中存储的值也都会释放掉), * 但是也有特殊不销毁的情况: * 1.函数执行完成,当前形成的栈内存中, * 某些内容被栈内存以外的变量占用了, * 此时栈内存不能释放(一旦释放外面找不到原有的内容了) * 2.全局栈内存只有在页面关闭的时候才会被释放掉 * ... * 如果当前栈内存没有被释放, * 那么之前在栈内存中存储的基本值也不会被释放,能够一直保存下来 */ var i = 1; function fn(i) { return function (n) { console.log(n + (++i)); } } var f = fn(2); f(3); fn(5)(6); fn(7)(8); f(4); //=>在和其它值进行运算的时候有一些区别 // i++:自身累加1 (先拿原有值进行运算,运算结束后,本身累加1) // ++i:自身累加1 (先自身累加1,拿累加后的结果进行运算) /* var k = 1; console.log(5 + (k++), k);//=>6 2 k = 1; console.log(5 + (++k), k);//=>7 2 */ //=>思考题: // var k = 1; // console.log(5 + (++k) + (k++) + 4 + (k--) + (++k) + 3 + (--k) + (k++), k); ~~~ ![](https://img.kancloud.cn/02/b9/02b910a8a980d2ff23ac676870bb4d2e_2938x878.png)