作用域学习------执行上下文环境

参考深入理解javascript原型和闭包(8)——简述【执行上下文】上

概念

执行上下文环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为

JS代码在真正一句一句执行之前,浏览器已经做了一些准备工作。我们首先从这个例子入手。

例1
console.log(a);//undefined
console.log(a);//undefined
var a = 100;
var a;
console.log(a);//undefined;

三个例子的结果都是undefined。第一个为定义,结果是undefined很正常;第二个和第三个定义了,第三个给的结果也是undefined,而第二个还赋值了,却还是undefined,说明开始浏览器给这个变量的赋值为undefined。
注意,变量赋值实在语句真正执行时赋值。

例2
console.log(f1);//function f1(){}
function f1(){
    ........
}
console.log(f2);//undefined
var f2 = function(){
    .......
}

f1是函数声明的形式,f2是函数表达式,所以f1在执行之前就已经赋值了,而f2为undefined.

例3
function fn(){
    console.log(this);//Window
}
fn();

无论在什么时候,this总是有值的。
以上这些情况是在全局语句执行前,在函数体的语句执行前,还要准备arguments和函数的参数的赋值
例4

function fn(x){
    console.log(arguments);//10;
    console.log(x);//10;
}
fn(10);

对于自由变量,已经在函数定义时,就已经在函数体内确定了自由变量的作用域。
例5

var a = 5;
function fn(){
    console.log(a);//5
}
fn();

所以,总结起来,在执行上下文环境就是代码执行前的这些数据的准备情况。看图:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值