Rumah >hujung hadapan web >tutorial js >JS执行环境实例简介

JS执行环境实例简介

小云云
小云云asal
2018-03-07 10:37:491830semak imbas

“执行环境”,听到这个名词,可能变得很头大!并且不少文献中又叫做“执行上下文”,不过实际上是一个东西。书籍和资料中也往往讲得特别复杂,这可是JS中一个难以理解得地方啊,别急,本篇文章尝试用通俗浅显的语言阐述这个概念。

一、例子解说执行环境

先看一个例子:
我们在浏览器控制台输入:

var a=1;console.log(window.a);console.log(a);

结果是输出1,显然a变量是window对象的一个属性。
那么我问你:a变量的执行环境是什么呢?
相信你不难回答:就是window对象啊!的确,你说得很对,window对象就是a变量的执行环境,它叫做全局执行环境,因为它是最外围的一个执行环境。这里,a默认就是在全局执行环境中定义的,因此a和window.a是同一个。
我们再看下一个例子:

function output(){
    var a=1;
    console.log(a);
}

这个例子中,a是定义在函数内部的,那么a的执行环境便是函数执行环境(output)。
如果你在window中输入:

console.log(a);

是会报错的,因为a只在函数output中可见。
但你输入:

console.log(output);

却会正常显示函数,因为函数output的执行环境是window,在window中当然可以显示呀!

二、执行环境怎么工作?

我们知道,output函数是在window环境中。当程序运行output函数的时候,你应该已经猜到了:
window环境将控制权交给output函数环境,output环境就成为了主场。
那么,实际上背后搞了些啥呢?
JS中有个东西叫做执行环境栈,或者叫做执行上下文栈,不知道栈是啥该补一下数据结构了。
就像堆箱子一样,全局执行环境被放在执行环境栈的最下面。当运行到output函数,这个函数的执行环境也被打包成一个箱子‘堆’在全局执行环境的上面。如果我要继续运行全局环境中的其他函数,就像要拿最下面箱子的东西一样,必须先把output函数执行完。形象地说,就像把上面的箱子拿开,然后才能动下面的箱子。

相关推荐:

如何理解javascript中的类型、传参和执行环境

执行环境及作用域实例详解

javascript 作用域链与执行环境

Atas ialah kandungan terperinci JS执行环境实例简介. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel sebelumnya:js数组判断实例代码Artikel seterusnya:JS插入排序详解