回归JavaScript基础,四

主题:JavaScript变量、作用域和内存问题

JavaScript的变量和别的语言比起来是与众不同的。说道变量,不得不谈他的作用域。同很多语言一样,JavaScript开发者也不用担心开发中内存的占用。JavaScript具有自动的垃圾处理机制,去处理内存占用问题。同样,下面我对本章的一些注意点进行了总结。

①JavaScript变量包含两种不同类型的值:基本类型值(Undefined、Null、Boolean、Number、String)和引用类型(Object...)

②引用类型的值是存在内存中的对象。JavaScript不允许直接访问内存中的位置,即不能直接操作对象的内存空间。也就是说,我们平时操作的只是对象的引用

③JavaScript只接受对引用类型动态的添加属性

④instanceof操作符专门用于判断变量类型,若是引用类型返回true,基本类型返回false

1 var person = {
2     name: "xuchaoi",
3     age: 24
4 };
5 alert(person instanceof Object);  // 执行后,弹出提示true。

⑤JavaScript中存在全局执行环境和局部执行环境。在浏览器中,全局执行环境就是window。每个函数拥有自己的局部执行环境。例:函数中获取一个变量,首先会在函数自身的局部环境中查找,找不到的话会去外层查找,直到查到最外层(全局执行环境window)

⑥JavaScript中不存在块级作用域。

1 if(true){
2     var color = "blue";
3 }
4 alert(color);
5 // 执行后出现弹框显示blue。如果在C、Java中程序会出错,因为if语句执行后就会被销毁,后面就没有color的值了!

⑦JavaScript具有自动垃圾回收机制。

⑧尽管不必担心内存管理问题,但出于程序性能的考虑,应优化内存的占用。程序只保存必要的数据,一旦数据不需要,设置其值为null来释放