美文网首页
作用域、作用域链

作用域、作用域链

作者: lililifeng | 来源:发表于2017-02-26 14:11 被阅读0次

作用域

全局作用域 global

(1)最外层函数和在最外层函数外的变量拥有全局作用域

var i=1;
function a(){
var aw="qw";
console.log(aw);
function ba(){
var qq="aaa";
}
}

console.log(i);
condole.log(aw);
a();

//1
//Uncaght ReferenceError : aw is not defined(...)
//qw

(2)所有没有声明变量都自动声明拥有全局作用域

function c(){
   o="qw";
 
   function ba(){
  p="aaa";
   }
ba();
   }
    c();
 
 console.log(o);
 console.log(p);

// qw
// aaa

(3)一般情况下,window下所有的属性默认拥有全局作用域,如:windows.onload,window.scroll等

局部作用域

与全局作用域相反,局部作用域只作用于某些代码片段内,只在内部可用

function ew(){
var e=2;
function q(){
var s=2,w=3;
console.log(s);
var d=s+w;
}
q();
console.log(d);
}
undefined
ew();
//  2
//  Uncaught ReferenceError: d is not defined(…)

作用域链

在JavaScript中,函数也是对象,实际上,JavaScript里一切都是对象。函数对象和其它对象一样,拥有可以通过代码访问的属性和一系列仅供JavaScript引擎访问的内部属性。其中一个内部属性是[[Scope]],由ECMA-262标准第三版定义,该内部属性包含了函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链,它决定了哪些数据能被函数访问。

function fo(){
 var a=3;
 }

这里函数文调用之前,作用域如图

作用域链前

执行此函数时会创建一个称为“运行期上下文”的内部对象,运行期上下文定义了函数执行时的环境。每个运行期上下文都有自己的作用域链,用于标识符解析,当运行期上下文被创建时,而它的作用域链初始化为当前运行函数的[[Scope]]所包含的对象。

这些值按照它们出现在函数中的顺序被复制到运行期上下文的作用域链中。它们共同组成了一个新的对象,叫“活动对象”,该对象包含了函数的所有局部变量、命名参数、参数集合以及this,然后此对象会被推入作用域链的前端,当运行期上下文被销毁,活动对象也随之销毁。新的作用域链如下图所示:

作用域链后

相关文章

  • 作用域链和闭包

    在谈作用域链之前先说一下与作用域链关系紧密的执行环境和作用域。 作用域:作用域指的是变量的适用范围。 作用域链:作...

  • web性能实践

    一. 作用域 前面我们了解作用域概念的以及作用域链是如何运作的。 随着作用域链中的作用域数量的增加,访问当前作用域...

  • 作用域链

    作用域链 把多个作用域串起来便形成了作用域链;每个函数在初始化完成之后就拥有了各自的作用域链,但此时的作用域链中并...

  • 作用域/作用域链 闭包及其使用

    一、作用域、作用域链 作用域(scope) 浅显的理解: 作用域就是变量的可用范围(scope) 为什么要有作用域...

  • JS 作用域

    作用域 作用域:限制某个变量在某个区域内有效 作用域分为 全局作用域 和 局部作用域 作用域链 从里到外依次执行 ...

  • 作用域和作用链

    关键词:作用域作用链 作用域 js中没有块级作用域 全局作用域,函数作用域太简单,就不演示(≧▽≦)/啦啦啦 作用...

  • 2018-12-18

    JS高级 作用域&作用域链 作用域: 1.作用域的个数:n(函数声明的个数)+1(全局作用域)2.作用域不会存储变...

  • 作用域和闭包

    作用域链 (据我所知)所有的编程语言都存在作用域链。整个代码存在全局作用域、函数作用以及块级作用域。 上述代码将会...

  • 彻底搞懂JS作用域和作用域链

    作用域和作用域链 作用域:决定了代码区块中变量和其他资源的可见性; ·全局作用域和函数作用域 作用域是分层的内部可...

  • JavaScript面试考点之作用域和作用域链、执行上下文和执行

    1、作用域和作用域链 1)作用域 作用域是变量(变量作用域又称上下文)和函数生效(能被访问)的区域。作用域决定了代...

网友评论

      本文标题:作用域、作用域链

      本文链接:https://www.haomeiwen.com/subject/pymowttx.html