1.谷歌浏览器和Node里面的V8引擎
2JavaScript的执行:
1)概念
(1)全局对象Global Object(GO) 新版本叫VE VariableEnvironment 变量和函数声明叫做环境记录:Environment Record:当代码开始执行的时候会建立全局对象,里面存放全局作用域下的属性和函数声明
(2)执行上下文栈(Execution Context Stack,简称ECS):执行代码的一个栈,执行先进后出的原则,包括全局执行上下文栈和函数执行上下文栈。
(3)Execution Context(EC)就是代码块:包括Global Execution Context(EC)全局执行代码块和Functional Execution Context(FEC)函数执行代码块(包括三部分:1,this绑定的值2.作用域链,由自身AO和父级的对象组成,当需要值的时候,会一层层的去查找 3.AO:包括形参、arguement、函数定义、指向函数的变量)
2)过程
3)面试题
var n = 100
function foo() {
n = 200
}
foo()
console.log(n)
面试题一:1,先创建全局执行上下文栈 2.创建全局对象 3.把n放到全局对象 4.foo放到全局对象5.执行全局上下文 赋值n为100 6.执行foo函数 7.创建foo执行上下文 8.执行n=200 n找不到就到全局找 然后给n赋值200 打印n 是200
var a = 100
function foo() {
console.log(a)
return
var a = 200
}
foo()
面试题2:先创建全局上下文栈 2.创建全局对象 3.a放到全局对象 4.foo放到全局对象 5.创建foo对象 6.执行全局上下文栈 7.赋值a=100 8.执行foo 创建foo执行上下文栈 9.把a放到执行上下文里 10.打印a 是unde
![](https://i-blog.csdnimg.cn/blog_migrate/cfba858e87dd8d65814b6c65dd619481.png)
function foo() {
b = 10
}
foo()
console.log(b)