变量
原始值
最简单的数据
-
引用值
由多个值构成的对象
存储在堆内存上
- 包含引用值的变量实际上只包含指向响应对象的一个指针,而不是对象本身
- 简单的复制对象只会复制指针,既浅拷贝
typeof操作符、instanceof操作符
typeof可以确定值的原始类型
```javascript let s = “Nicholas”; let b = true; let i = 22; let u; let n = null; let o = new Object();
console.log(typeof s); // string console.log(typeof i); // number console.log(typeof b); // boolean console.log(typeof u); // undefined console.log(typeof n); // object ,typeof null ==> object console.log(typeof o); // object
<a name="fBG4a"></a>
### instanceof用于确保值的引用类型
```javascript
console.log(personinstanceofObject); //变量person是Object吗?
console.log(colors instanceof Array); // 变量 colors 是 Array 吗?
console.log(pattern instanceof RegExp); // 变量 pattern 是 RegExp 吗?
执行上下文(作用域)
分为:全局上下文、函数上下文、块级上下文
垃圾回收机制
离开作用域的值会被自动标记为可回收,然后在垃圾回收期间被删除。
标记清理
引用计数(循环引用时会出问题)
解除变量的引用不仅可以消除循环引用,而且对垃圾回收也有帮助。
为促进内存回收,全局对象、全局对象的属性和循环引用都应该在不需要时解除引用。