js代码的运行环境

  • 浏览器 -> webkit内核(V8) IE [Trident] 火狐 [Gecko] 谷歌 [Blink]
  • Node -> webkit内核
  • webview -> [hybrid混合app开发] -> webkit内核

内存

  • 栈内存:ECStack(Execute Context Stack)执行环境栈 [栈内存] 供代码执行
  • 堆内存:Heap

1.png
VO(G)全局变量对象:存储全局上下文中声明的变量的,是个栈
GO全局对象,是个堆,目的存储浏览器内置的api, 如:setTimeout,setInterval,json,eval,requestAnimationFrame

1-1.png

例子:
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
执行顺序:

  1. 创建12
  2. obj.x = 12
  3. b = 12

例子:
1.png