发表于: 2016-08-19 23:37:32

3 2303


  1. 明天计划的事情查缺补漏


    遇到的问题:。。


收获:

在一段js代码拿过来真正一句一句运行之前,浏览器已经做了一些“准备工作”,其中就包括对变量的声明,而不是赋值。变量赋值是在赋值语句执行的时候进行的。
在“准备工作”中完成了哪些工作:
  • 变量、函数表达式——变量声明,默认赋值为undefined;
  • this——赋值;
  • 函数声明——赋值;
这三种数据的准备情况我们称之为“执行上下文”或者“执行上下文环境”。
全局代码的上下文环境数据内容为:
普通变量(包括函数表达式),如: var a = 10;声明(默认赋值为undefined)
函数声明,如: function fn() { }赋值
this赋值
如果代码段是函数体,那么在此基础上需要附加:
参数赋值
arguments赋值
自由变量的取值作用域赋值
因此函数每被调用一次,都会产生一个新的执行上下文环境。
函数在定义的时候(不是调用的时候),就已经确定了函数体内部自由变量的作用域
执行全局代码时,会产生一个执行上下文环境,每次调用函数都又会产生执行上下文环境。当函数调用完成时,这个上下文环境以及其中的数据都会被消除,再重新回到全局上下文环境。处于活动状态的执行上下文环境只有一个。
javascript除了全局作用域之外,只有函数可以创建的作用域并且在声明变量时,全局代码要在代码前端声明,函数中要在函数体一开始就声明好。除了这两个地方,其他地方都不要出现变量声明。而且建议用“单var”形式。





返回列表 返回列表
评论

    分享到