- 基本类型对应的变量保存的是基本类型的地址
例如
number
类型:var foo=5;
,在内存中并不是直接保存了一个数字,而是以字典的形式保存了以下内容{ foo: { [[value]]: 5 [[writable]]: true [[enumerable]]: true [[configurable]]: true } }
所以变量foo的值并不是5,而是上面这个字典的地址,也就是基本类型也是使用的
引用
![]()
- 函数
例如
var foo=function () {}
引擎将会把
function () {}
函数体单独保存在内存中,再将函数体的地址赋给foo的value,如下{ foo: { [[value]]: 函数的地址 ... } }
所以foo保存了字典的地址,字典的value属性保存了函数的地址
- 函数可以在不同的环境中执行
由于foo仅保存函数字典的地址,所以这个地址可以赋给其他任意变量,而变量又可以属于不同上下文,所以函数可以在不同上下文中执行。
而this就是确定函数所在上下文的。
网友评论