总结下 javascript 里变量声明关键字

121 阅读1分钟

可修改

  • var
  • let
  • function
  • class

不可修改

  • const
  • import 修改会报错,就算已经 import 引入,也会提示未定义

函数内部

我们知道,在js函数内部定义的变量,会在函数执行完毕就自动回收掉,但是经过使用 WeakMap 实际验证,得到结论,只有用 let,const,var 定义的普通字符串或者普通对象或者数组才能回收内存,用 import,function,class 定义的本质上类似于函数,而函数类型是无法回收内存的。

全局

全局环境,如果定义特别大的对象等,一般都要清理内存,所以需要将对应指针置为 null,但是一方面和上面一样,函数是无法回收的,一方面,用 class,const, import 定义的变量本身就不允许修改,所以很无语

总结

其实,如果你的代码里没有for之类的循环,没有多次重复建立对象等,其实是没有必要去释放内存的,内存占用过大或者内存泄漏基本都发生在多次循环未释放,如果你的代码从头到尾执行一遍,中间不会出现任何循环或者执行完后不会再去重复执行某段代码,完全没必要担心内存的问题。 而且正常的js机制一般都能正确回收内存,所以真的不用刻意去清空变量