1. instanceof
用来判断某个值是什么类型的对象
console.log('111' instanceof String) // false
console.log(new String('111') instanceof String) // true
2. 执行环境
0.JavaScript的执行环境就两种。
全局和局部
1.全局执行环境是最外围的一个执行环境。所在宿主环境不同,执行环境的对象也不一样
2.某个执行环境中的所有代码执行完毕,该环境被销毁,保存在其中的所有变量和函数定义也销毁(全局执行环境直到应用程序退出—例如关闭网页或浏览器----才销毁)
3.当执行流进入一个函数时,函数的环境就会被推入一个环境栈中。再函数执行之后,栈将环境弹出,把控制权返回给之前的执行环境
4.当代码在一个环境中执行时,会创建变量对象的一个作用域链。
内部环境可以通过作用域链访问所有的外部环境,但外部环境不能访问内部环境中任何变量和函数
小结
- 基本类型的值在内存中占据固定大小的空间,因此保存在栈内存中
- 确定一个值是那种基本类型可以使用typeof操作符。确定一个值是哪种引用类型可以使用instanceof
- 每次进入一个新执行环境,都会创建一个用于搜索变量和函数的作用域链
- 函数的局部环境不仅有权访问函数作用域中的变量,而且有权访问其包含环境,乃至全局环境
- 全局环境只能访问在全局环境中定义的变量,而不能直接访问局部环境中的任何数据
- 变量的执行环境有助于确定应该合适释放内存
- 离开作用域的值将被自动标记为可以回收,因此将在垃圾收集期间被删除