Not Defined VS undefined
undefined:
在创造阶段只有变数在记忆体里,而未赋予值,所以出现undefined的结果。
Not Defined
记忆体连变数都没有就会出现Not Defined。
记忆体的回收机制(Garbage collection)
本段是节录https://www.itread01.com/ 的「中高阶前端必须了解的」JS中的记忆体管理,并加上部分自己的理解而成,如有错误,仍请大大鞭策!!
定义:就是找出那些不再继续使用的值,然后释放其佔用的记忆体。
区域性变数: 就是不再需要使用的变数也就是生命週期结束的变数,区域性变数只在函式的执行过程中存在,当函式执行结束,没有其他引用(闭包),那么该变数会被标记回收。
function getData() { var demoData = []; for (var i = 0; i < 1000; i++) { demoData.push(randomString(5000)) } console.log(demoData); }getData()
var demoData在函式function getData里面,属于区域性变数;函式则依照记忆体堆叠先进后回收,后进先回收。
全域性变数:生命週期直至浏览器解除安装页面才会结束,也就是说全域性变数不会被当成垃圾回收。
var demoData = []; function getData() { for (let i = 0; i < 1000; i++) { demoData.push(randomString(5000)) } } getData() console.log(demoData)
var demoData此时就是全域性变数,而且是放在记忆体的全域执行环境区。