首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js作用与预解析

作用 1.1 全局作用 在script标签下直接声明的变量或函数,都会在全局作用下。...也叫局部作用,如果一个变量是在函数内部声明的,它就处于函数作用。...7console.log(a);//"a" 8console.log(b);//b is not defined 9console.log(c);//c is not defined 10 1.4 作用...在使用一个变量的时候,首先js会先在当前作用下去寻找该变量,如果没找到,再到它的上层作用寻找,以此类推直到找到该变量或是已经到了全局作用。...预解析 js运行分为两步:预解析,代码执行 预解析:var声明的变量(不赋值)和函数,会被提升到当前作用最前面 代码执行:按照代码书写的顺序从上往下执行 预解析优先级: 函数>变量 因为函数提升是整体提升

42310

JS作用作用

JS中的作用就是在一定的空间范围内对数据进行读写操作。 在JS中一个变量的作用(scope)是程序中定义这个变量的区域。 变量有全局变量和局部变量两种。...下面就要借助JS作用来更好的理解作用了。 在此之前,先要明确个概念,即执行环境和作用是两个完全不同的概念。 函数的每次调用都有与之紧密相关的作用和执行环境。...作用包含了执行环境栈中的每个执行环境对应的变量对象。通过作用,可以决定变量的访问和标识符的解析。 注意:全局执行环境的变量对象始终都是作用的最后一个对象。...需要注意的是:内部环境可以通过作用访问所有的外部环境,但是外部环境不能访问内部环境中的任何变量和函数。 标识符解析(变量名或函数名搜索)是沿着作用一级一级地搜索标识符的过程。...搜索过程始终从作用的前端开始,然后逐级地向后(全局执行环境)回溯,直到找到标识符为止。 此外还要讲下JS作用域中的块级作用JS中是没有块级作用这个概念的。 什么是块级作用呢?

4.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JS基础——作用作用

    作用 [[scope]],函数定义时自动生成的一个隐式属性,是用来存储函数作用 Scope Chain的容器。作用是用来存储函数执行上下文 AO和全局执行上下文 GO的容器。...函数被定义时,系统会为函数生成[[scope]],[[scope]]中保存该函数的作用,并从该作用的起始位置开始存储当前环境的作用。...函数被定义后&将要执行前会生成函数本身的AO,并将其插入作用的起始位置。...,并将GO插入到作用的起始位置。...函数a被执行时,此时函数b也被定义,函数b的[[scope]]也在此时生成,其中存储函数b的作用,并将当前环境的作用插入函数b作用的起始位置,即函数a的AO和GO。

    3.5K10

    JS进阶:作用作用

    全局作用有个弊端:如果我们写了很多行 JS 代码,变量定义都没有用函数包括,那么它们就全部都在全局作用域中。这样就会 污染全局命名空间, 容易引起命名冲突。...因为放在里面的所有变量,都不会被外泄和暴露,不会污染到外面,不会对其他的库或者 JS 脚本造成影响。这是函数作用的一个体现。...这表明函数内部的变量i与循环变量i不在同一个作用,有各自单独的作用作用 1.什么是自由变量 首先认识一下什么叫做 自由变量 。...再一层一层向上寻找,直到找到全局作用还是没找到,就宣布放弃。这种一层一层的关系,就是 作用 。...console.log(b) // 自由变量,顺作用向父作用找 console.log(c) // 本作用的变量 } F2() } F1() 3

    2.6K20

    了解 JS 作用作用

    JS中的声明提前 js中的函数作用是指在函数内声明的所有变量在函数体内始终是可见的。...引入一大段话来解释: 每一段js代码(全局代码或函数)都有一个与之关联的作用(scope chain)。 这个作用是一个对象列表或者链表,这组对象定义了这段代码中“作用域中”的变量。...当js需要查找变量x的值的时候(这个过程称为变量解析(variable resolution)),它会从的第一个对象开始查找,如果这个对象有一个名为x的属性,则会直接使用这个属性的值,如果第一个对象中没有名为...作用举例: 在js最顶层代码中(也就是不包括任何函数定义内的代码),作用由一个全局对象组成。...作用创建规则: 当定义一个函数时(注意,是定义的时候就开始了),它实际上保存一个作用

    2K10

    JS入门难点解析6-作用

    简介 在JS入门难点解析5-变量对象中提到,对于每个执行上下文,都有三个重要属性: 变量对象(Variable object,VO) 作用(Scope chain) this 这篇文章主要讲解作用...作用 来看《JavaScript高级程序设计》里对作用的一段解释: 当代码在一个环境中执行时,会创建变量对象的一个作用(scope chain)。...作用的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。作用的前端,始终都是当前执行的代码所在环境的变量对象。...标识符解析是沿着作用一级一级地搜索标识符的过程。搜索过程始终从作用的前端开始,然后逐级地向后回溯,直至找到标识符为止(如果找不到标识符,通常会导致错误发生)。...前端基础进阶(四):详细图解作用与闭包 JS入门难点解析5-变量对象 javascript中的[[scope]],scope chain,execution context!

    66610

    js作用作用和它的一些优化

    变量标识符解析和引用的过程就是沿作用迭代查找变量是否在作用节点中并返回变量相关信息的过程。...相关优化综合上面的标识符的解析过程和作用以及作用的关系,我们可以了解到,变量标识符解析的性能是和变量标识符所处在作用中的位置是息息相关的。...变量标识符所出的作用节点越靠近整个作用的前端,则需要沿作用迭代查找的次数就越少,变量标识符解析的速度就会越快,性能就越好。...外部作用变量标识符的多次引用,会造成执行过程中的标识符解析沿作用查找的频繁执行,这种查找在第一次解析引用时是必须的,但是后续解析引用却是重复的。...作用作用嵌套的结构产物,所有变量标识符的解析和引用会沿着作用进行查找。而词法环境,是JavaScript对于作用的内部技术实现。

    1.7K00

    作用作用

    作用作用 通常来说,一段程序代码中所用到的名字并不总是有效或可用的,而限定这个名字的可用性的代码范围就是这个名字的作用scope。...如果一个变量或者其他表达式不在当前的作用,则将无法使用。作用也可以根据代码层次分层,以便子作用可以访问父作用,通常是指沿着链式的作用查找,而不能从父作用引用子作用域中的变量和引用。...全局作用 直接声明在顶层的变量或方法就运行在全局作用,借用函数的[[Scopes]]属性来查看作用,[[Scopes]]是保存函数作用的对象,是函数的内部属性无法直接访问但是可以打印来查看。...,也是局部作用 作用 var a = 1; (function s(){ var a = 2; console.log(a); // 2 })(); console.log(a);...作用、localContext作用、Global作用,总结来说,当需要使用函数或者变量时,如果在当前作用域中没有查到值,就会向上级作用去查,直到查到全局作用,这样一个查找过程形成的链条就叫做作用

    1.9K20

    【JavaScript】作用 ③ ( JavaScript 作用 | 作用变量查找机制 )

    一、JavaScript 作用 1、作用 在 JavaScript 中 , 任何代码都有 作用 , 全局作用 : 在 标签中 或者 js 脚本中 定义的变量 属于 全局作用...之前使用 var 关键字在 {} 代码块 中定义的变量 , 取决于 代码块位置 , 代码块在全局作用 则 该变量属于全局作用 , 代码块在 局部作用 则该变量属于 局部作用 ; 2、作用 如果在...确定取哪个值 , 这种作用结构 称为 " 作用 " ; 内部函数 , 外部函数 , 全局变量 中 , 定义的变量名称 可能是相同的 , 给定一个变量名 , 需要从作用中具体查找 作用 是...; 3、作用变量查找机制 在 JavaScript 代码中 的 嵌套作用 中 , 查找 变量 或 函数 的 机制就是 作用 的 链式查找机制 ; 内部函数 在 访问 指定名称的 变量时 ,...没有该变量 , 则报 " 变量未定义 " 错误 ; 二、代码示例 - 作用 在下面的代码中 : 首先 , 在 全局作用 中定义 num 变量 , 该变量的 作用 属于 全局作用 ; 然后 ,

    9310

    JavaScript 作用作用

    每个运行期上下文都有自己的作用,用于标识符解析,当运行期上下文被创建时,而它的作用初始化为当前运行函数的[[Scope]]所包含的对象。...---- 例子 举一个作用的例子。...---- 代码优化 从作用的结构可以看出,在运行期上下文的作用中,标识符所在的位置越深,读写速度就会越慢。...因为全局变量总是存在于运行期上下文作用的最末端,因此在标识符解析的时候,查找全局变量是最慢的。所以,在编写代码的时候应尽量少使用全局变量,尽可能使用局部变量。...一个好的经验法则是:如果一个跨作用的对象被引用了一次以上,则先把它存储到局部变量里再使用。 ---- VO & AO 变量初始化阶段 JS解释器如何找到我们定义的函数和变量?

    1.7K10

    作用、执行环境、作用

    作用,之前有介绍过,JavaScript无块级作用,只有函数作用,简单点说就是JavaScript的作用就是函数作用。因为有函数作用,所以我们有全局作用和局部作用的说法。...当代码在一个环境中执行时,会创建变量对象的一个作用作用的用途,是保证对执行环境有权访问的所有变量和函数的有序访问。...当fun1执行的时候创建了一个作用,所以fun1有两个变量对象,一个是自己,一个是全局环境的变量对象window。fun1可以在函数内部访问变量a,因为fun1所在的作用可以找到变量a。...,作用中的内部环境可以通过作用访问所有的外部环境,但外部环境不能访问内部环境中的任何变量和函数。...作用中,每一个局部环境都会首先寻找自身环境中的属性和方法,搜索到了就停止寻找,没有找到再向上搜索直到最外层window还搜索不到就报错。 (完)

    1.5K30

    JavaScript作用作用

    总之一句话: 函数的作用在函数定义的时候就决定了 函数会沿着作用去查找变量。 那么为什么 JavaScript 是静态作用呢?JavaScript 引擎是怎么处理函数的呢?...对于每个执行上下文,都有三个重要属性: 变量对象(Variable object,VO) 作用(Scope chain) this JavaScript 引擎会沿着作用去查找变量。...作用是如何产生?我们应该先了解 JavaScript 引擎 在创建 执行上下文 的具体处理过程。..., 用 arguments 创建活动对象, 初始化活动对象,即加入形参、函数声明、变量声明, 将活动对象压入 checkscope 作用顶端(执行至此,该函数的作用才完整)。...这样由多个执行上下文的变量对象构成的链表就叫做作用。 由上可知,作用是由 变量对象/活动对象 构成的。 活动变量 变量对象是与执行上下文相关的数据作用,存储了在上下文中定义的变量和函数声明。

    1.5K40

    四、作用作用

    作用作用本应该是一个非常简单的概念。...JS引擎对JS源码进行词法分析,也是按照这个规则来。 因此,词法环境,在我们写代码的时候就已经确定了。明白了这一点,对于区分词法环境与执行上下文有非常关键的意义。...词法环境,其实就是作用,有的人叫词法作用等等 得出结论: 一、在JavaScript中,我们可以将作用定义为一套规则,这套规则用来管理JS引擎如何在当前作用以及嵌套的子作用域中根据标识符名称进行变量查找...作用 首先我们要明确的一点是,作用作用是不同的。 作用是一套规则。 而作用则是在代码执行过程中,会动态变化的一条索引路径。...scopeChain[0]为作用的最前端,而数组的最后一项,为作用的最末端,所有的最末端都为全局变量对象。

    1.5K20

    原型与原型作用作用

    原型与原型: 每个函数都有 prototype 属性,除了 Function.prototype.bind() ,该属性指向原型。...对象可以通过 __proto__ 来寻找不属于该对象的属性, __proto__ 将对象连接起来组 成了原型。...__proto__ 作用作用: 作⽤就是变量与函数的可访问范围,即作⽤控制着变量与函数的可⻅性和⽣命周期,也可理解为该上下⽂中声明的变量和声明的作⽤范围,可分为块级作⽤和函数作⽤。...作⽤可以理解成包含⾃身变量对象和上级变量对象的列表,通 过 [[Scope]] 属性查找上级变量。...作⽤的作⽤是保证执⾏环境⾥有权访问的变量和函数是有序的,作⽤的变量只能向上访问,变量访问到 window 对象即被终⽌,作⽤向下访问变量是不被允许的。

    29810

    java作用-什么是JavaScript作用作用

    作用作用也是面试中出镜率很高的问题之一java作用java作用,同时也是中最重要的基础概念之一。   ...今天我们将通过最简单实际的代码来展示函数作用和全局作用,在下篇文章中,我们将介绍块级作用和暂时性死区。   ...作用基本知识   简单来说,作用就是用来规定变量的作用范围的,在任何语言当中都会有作用的概念,在ES6以前,只有函数作用和全局作用,ES6之后又增加块级作用。   ...foo函数中也无法访问bar函数中定义的变量b,其作用中(直到最上层的全局作用域中)也并不存在变量b,所以代码会报错 : b is not   简单来说就是,在执行某个函数时,如果需要取某个变量的值...变量作用就是这样一层一层相套的关系,逐层寻找,这也就是被称之作用的原因。   在下篇文章中,我们将介绍块级作用和暂时性死区的相关内容。 本文共 678 个字数,平均阅读时长 ≈ 2分钟

    1.9K20

    JS作用

    JavaScript的作用有全局作用和局部作用 先通过一下代码来体验下作用 var x = 1; function f1(){ var y = 2; x = 10; console.log...undefined 就是报如下的错误,也就是y是个未定义的变量 VM42:7 Uncaught ReferenceError: y is not defined at :7:13 上述代码中变量x就是全局作用...,方法f1的作用也是全局,f1方法中的变量y是局部的,y的作用范围仅限f1方法体内,离开了f1的方法体的作用范围,就无法获取到y的值,所以上述的例子中最后打印y的时候是undefined 我们再来看下面的例子...----------------------------------------------------------------------- 1 是不是跟大家想的不一样,让我们来分析一下这段代码的预解析过程...,只要把这段代码的预解析搞明白了,就能猜到他的结果输出了 接下来用一道面试题来举个例子 var a = 10; function f1(){ var b = 2*a; var a = 20

    11310
    领券