javascript执行环境

javascript执行环境

总结: javascript高级编程第三版

概念

执行环境定义了变量或函数有权访问的其他数据,决定了他们各自的行为.每个执行环境都有一个与之关联的变量对象.环境中定义的所有变量和函数都保存在这个对象中.虽然我们在编写代码的时候无法访问这个对象,但解析器在处理数据时会在后台用到它.

分类

  1. 全局执行环境
  2. 局部(函数)执行环境

javascript解析器维护着一个执行环境栈,每个函数都会有他自己的执行环境.执行函数代码时,该执行环境会被压入栈顶,当执行完毕时其执行环境又会被弹出.将栈顶交由其宿主环境

宿主环境: 在环境栈中,当前执行环境的下一个(这是一个递归定义).
另外作用域链依赖于执行环境.

var name = "狗蛋";
var age = 3;
function sayHello(){
	var name = "翠花";
	console.log("你好啊, 我是%s, 我%d岁了.", name, age);
	// 输出: 你好啊, 我是翠花, 我3岁了.
}

闭包

说到执行环境那就不得不说下闭包了,闭包是javascript一个强大并且灵活的特性.

那么什么是闭包:

  1. 在使用(敲代码)上来讲就是一个函数的返回值又是一个函数
  2. 在执行环境上来讲就是该函数(返回值的函数)的宿主环境不是全局环境.

根据作用域链的方向我们可以知道,我们多了一个可以访问的执行环境.
附上一个有意思的讲解,互补下.廖老师-闭包

posted @ 2017-08-15 22:24  OOP喜欢FP  阅读(95)  评论(1)    收藏  举报