内部信息源与外部信息源搜索引擎优化方法的异同(【】函数的执行环境(作用域)私有作用域)
优采云 发布时间: 2022-03-29 16:07内部信息源与外部信息源搜索引擎优化方法的异同(【】函数的执行环境(作用域)私有作用域)
1. 范围
作用域是代码的执行环境,全局执行环境是全局作用域,函数的执行环境是私有作用域,都是栈内存。
执行环境定义了变量或函数可以访问的其他数据,这决定了它们各自的行为。每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都存储在这个对象中。尽管我们编写的代码无法访问此对象,但解析器在处理数据时会在后台使用它。
全局执行环境是最外层的执行环境。根据 ECMAScript 实现所在的宿主环境,代表执行环境的对象也不同。
一个执行环境中的所有代码执行完之后,环境就被销毁了,其中保存的所有变量和函数定义也被销毁(全局执行环境直到应用退出,比如关闭浏览器或者网页才会被销毁) 。 破坏)
每个函数都有自己的执行环境。当执行流程进入函数时,函数的环境被压入环境堆栈。函数执行完毕后,堆栈会被环境弹出,将控制权交还给之前的执行环境。ECMAScript 程序中的执行流程是由这种方便的机制控制的。
全面的; 总之:
范围是代码执行以打开堆栈内存
2. 作用域链
在环境中执行代码时,会创建变量对象的作用域链(作用域链)
内部环境可以通过作用域链访问所有外部环境,但外部环境不能访问内部环境的任何变量和函数。
var n = 10;
function outer(){
function inner(){
function center(){
console.log(n);
}
center();
}
inner();
var n = 15;
}
outer(); //=> undefined
例如,函数的执行形成了一个私有作用域。当前私有作用域中声明的形参和变量都是私有变量,存储在一个内部变量对象中。下一个*敏*感*词*。
当需要访问内部函数中的变量时,会先访问函数本身的变量对象,看是否有这个变量,如果没有,就会继续向上搜索作用域链,直到全局作用域。如果在变量对象中找到,则使用该变量对象中的变量值。
由于变量查找是沿着作用域链实现的,所以作用域链也称为变量查找机制。
这种机制也意味着访问局部变量比访问全局变量更快,因为中间查找过程更短。但是 JavaScript 引擎在优化标识符查询方面做得很好,所以这种差异可以忽略不计。