js代码的运行环境
- 浏览器 -> webkit内核(V8) IE [Trident] 火狐 [Gecko] 谷歌 [Blink]
- Node -> webkit内核
- webview -> [hybrid混合app开发] -> webkit内核
内存
- 栈内存:ECStack(Execute Context Stack)执行环境栈 [栈内存] 供代码执行
- 堆内存:Heap
VO(G)全局变量对象:存储全局上下文中声明的变量的,是个栈
GO全局对象,是个堆,目的存储浏览器内置的api, 如:setTimeout,setInterval,json,eval,requestAnimationFrame
例子:
EC(G)全局上下文
VO(全局变量)
a -> 0x000
b -> 0x001
var a = { //堆内存 0x000
n: 12
};
var b = a;
b = { //堆内存 0x001
n: 13
}
console.log(a.n) // 12
console.log({} === {}) // false 对象和对象比较,看的是内存地址,地址一样为true,不一样则为false
js运行是有优先级的
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
成员访问: obj.xx 优先级很大 [优先级大的会优先处理] 优先级为 20
例:
obj.x = b = 12
执行顺序:
- 创建12
- obj.x = 12
- b = 12
例子: