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

JS作用作用

JS中的作用就是在一定的空间范围内对数据进行读写操作。 在JS中一个变量的作用(scope)是程序中定义这个变量的区域。 变量有全局变量和局部变量两种。...下面就要借助JS作用链来更好的理解作用了。 在此之前,先要明确个概念,即执行环境和作用是两个完全不同的概念。 函数的每次调用都有与之紧密相关的作用和执行环境。...搜索过程始终从作用链的前端开始,然后逐级地向后(全局执行环境)回溯,直到找到标识符为止。 此外还要讲下JS作用域中的块级作用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

    理解javascript作用作用

    作用 作用就是变量和函数的可访问范围,控制着变量和函数的可见性与生命周期,在JavaScript中变量的作用有全局作用和局部作用。    ...全局和局部作用下面用一张图来解释: ? 单纯的JavaScript作用还是很好理解的。...当代码在一个环境中执行时,会创建变量对象的一个作用链(scope chain)来保证对执行环境有权访问的变量和函数的有序访问。     用一张图来解释作用链的运行:由里向外执行。 ?    ...每个运行期上下文都有自己的作用链,用于标识符解析,当运行期上下文被创建时,而它的作用链初始化为当前运行函数的[[Scope]]所包含的对象。        ...这些值按照它们出现在函数中的顺序被复制到运行期上下文的作用链中。

    2.1K10

    理解JavaScript作用作用

    中 {} 外面的作用就是全局作用,里面的变量和函数等其他资源可以在任意地方被访问到。...在这个作用内声明的变量,就只能在它这个作用和其子作用域中才能使用。...块级作用 ES6新增的块级作用:用let和const声明的变量才存在块级作用,在该代码块外部访问不到该变量。在{ }中用let和const声明的变量就是一个块级作用。...return b } return bar() } console.log(foo()) // foo中的b 上面代码中的b就是一个自由变量,即在当前作用域中没有定义b 三、js中的执行上下文...执行上下文(简称上下文)我们可以理解成一个js代码执行的环境,在代码执行阶段被创建,里面包含了定义的所有变量、函数以及this指向等。

    41200

    JS进阶:作用作用

    我们可以这样理解作用就是一个独立的地盘,让变量不会外泄、暴露出去。也就是说作用最大的用处就是隔离变量,不同作用下同名变量不会有冲突。...全局作用有个弊端:如果我们写了很多行 JS 代码,变量定义都没有用函数包括,那么它们就全部都在全局作用域中。这样就会 污染全局命名空间, 容易引起命名冲突。...因为放在里面的所有变量,都不会被外泄和暴露,不会污染到外面,不会对其他的库或者 JS 脚本造成影响。这是函数作用的一个体现。...我们看个例子,用泡泡来比喻作用可能好理解一点: image.png 最后输出的结果为 2, 4, 12 泡泡1是全局作用,有标识符foo; 泡泡2是作用foo,有标识符a,bar,b; 泡泡3...); // logs 'Hammad' JS 的初学者经常需要花点时间才能习惯变量提升,而如果不理解这种特有行为,就可能导致 bug 。

    2.6K20

    全局作用、函数作用、块级作用理解

    1.前言 作用是任何一门编程语言中的重中之重,因为它控制着变量与参数的可见性与生命周期。很惭愧,我今天才深入理解JS作用..我不配做一个程序员.....开玩笑,什么时候理解都不晚,重要的是理解了以后能不能深深地扎在记忆里,不能,那就写下来 2.块级作用 在一个代码块(括在一对花括号中的一组语句)中定义的所有变量在代码块的外部是不可见的。...来,拋一个典型的问题出来,你就明白块级作用出现的重要性了。...在ES5时代,还没有块级作用这个概念,但是当时也有一种解决方法,那就是.. .. .. .. .....、以及块级作用出现的意义,方便更好的记住。

    3K10

    了解 JS 作用作用

    ="one" 当然了,js里边还使用到了高阶函数,其实可以理解成嵌套函数 function test1(){ var name = "one"; return function (){...JS中的声明提前 js中的函数作用是指在函数内声明的所有变量在函数体内始终是可见的。...引入一大段话来解释: 每一段js代码(全局代码或函数)都有一个与之关联的作用链(scope chain)。 这个作用链是一个对象列表或者链表,这组对象定义了这段代码中“作用域中”的变量。...作用链举例: 在js最顶层代码中(也就是不包括任何函数定义内的代码),作用链由一个全局对象组成。...(tip: 把上面三点理解好,记住了,最好还要能用自己的话说出来,不然就背下来,因为面试官就直接问你:请描述一下作用链...)

    2K10

    js作用详解

    atest其实是一个window对象下的方法对象 var 局部变量作用 var 声明一个对象,只作用当前作用以下。...变量作用覆盖问题 通过var 关键字我们知道,当声明一个变量时,该变量可以被当前作用,以及下层作用访问 当下层作用存在同名变量时,下层变量将覆盖上层变量:     var a=...同时,在子作用声明的方法,只能在当前作用或者下层作用调用 闭包函数,闭包作用 闭包函数,又称匿名函数,例如:     (function () {         var a...在闭包函数中声明的变量,只能在闭包函数内的作用,以及下层作用使用,可通过return 对象中,通过return对象中声明的方法进行返回,使得上级作用能成功访问到闭包作用的变量 return作用变量访问情况...2:js作用是往下通用的,下层作用可访问上层作用的变量,并可修改值 3:js下层作用变量和上层同名冲突时,下层作用将覆盖上层变量,但上层作用的访问不受影响 4:不适用var方法定义的变量,

    2.5K10

    作用作用链的简单理解

    作用作用作用 javascript采用的静态作用,也可以称为词法作用,意思是说作用是在定义的时候就创建了, 而不是运行的时候。...此话对于初学者很不好理解,看看下面这个例子: let a=1 function aa(){ console.log(a) //输出1 } function bb(){ let a=...思路是完美的,可是js的作者采用的静态作用,不管你们怎么运行,你们 定义的时候作用已经生成了。 那么什么是作用? 变量和函数能被有效访问的区域或者集合。作用决定了代码块之间的资源可访问性。...作用又分为全局作用和函数作用,块级作用。 全局作用任何地方都可以访问到,如window,Math等全局对象。 函数作用就是函数内部的变量和方法,函数外部是无法访问到的。...再来理解几个概念词: AO:活动变量(Active object,VO) VO:变量对象(Variable object,VO) 执行上下文:代码运行的环境,分为全局上下文和函数上下文。

    80531

    原生JS | 作用

    HTML5学堂-码匠:作用那些必须掌握的知识,还有大量作用案例练习与分析,快快进来! 作用的基础知识 在JavaScript中,每个变量会有一个有效区域(范围),这个就是作用。...一个变量在其作用内是可以被访问的,在作用域外不能被访问。 全局作用与局部作用 变量的执行环境有两种:一种是全局,另一种是局部(如:放在函数里面)。...如果window下也不存在该空间,会在全局作用之下进行空间的创建。 作用链 由于在全局作用当中会包含局部作用,局部作用当中还可以再包含局部作用。...当有多层作用时,深层的作用域中查找变量时,会按照“当前作用”到“上层作用”再到“全局作用”的顺序进行查找,这个查找的顺序就可以理解作用链。...= '码匠'; } changeName(user); console.log(user); 如果觉得如上的代码还不容易理解,我们可以尝试更换形参名字,会更容易理解一些~如下代码与案例4的代码也是等价的

    4.8K50

    理解作用(引擎,编译器,作用

    JS中,引擎,编译器,作用分别扮演以下角色: 引擎:负责整个Js程序的编译以及执行过程。 编译器:负责语法分析以及代码生成等。...下面用一个小例子来表示: var a = 2;       1.首先,遇到var a,编译器会询问当前作用是否有一个该变量存在,如果存在,编译器则会忽略进行下一步,否则编译器会要求作用在当前声明一个新的变量...2.接下来编译器会为引擎生成运行时所需要的代码,这些代码被用来处理 a = 2这个赋值操作,引擎运行时首先询问作用,是否存在变量a,若存在,引擎就会直接使用该变量,否则引擎会继续向上一个作用寻找,直到找到为止...,如果在全局作用还未找到,此时引擎会抛出一个异常。  ...ReferenceError是同作用判定失败有关,而TypeError则是代表作用判别成功,但是对结果的操作属于非法,比如试图对一个非函数的值进行函数调用。

    77430

    理解JavaScript的作用

    大纲 作用 作用嵌套与作用链 查询异常 词法作用(静态作用) 函数作用 全局作用 块级作用 变量提升机制 函数优先 作用 是什么? 作用是指程序源代码中定义变量的区域。...作用嵌套的查询规则: 首先,JS引擎从当前的执行作用开始查找变量。 然后,如果找不到,引擎会在外层嵌套的作用域中继续查找。 最后,直到找到该变量,或抵达最外层的全局作用为止。...eval() 函数可以接受一个字符串,并执行其中的的 JS 代码。...在最外层作用下使用 var 关键字会定义全局变量,也就是说会挂载在 window 对象上,或者不使用关键字 var、let、const 直接对变量名字进行赋值,JS也会自动为其创建为全局变量。...变量提升机制 先声明,后赋值 JS变量的声明和赋值是2个不同的步骤,比如: a = 10 var a console.log(a) // 10 JS引擎会将 var a 和 a = 10 当作两个单独的声明

    69720

    彻底理解JavaScript作用

    为了完成这个目标,需要制定一些规则,这个规则就是:作用。 常见的作用主要分为几个类型:全局作用、函数作用、块状作用、动态作用。...作用也可以根据代码层次分层,以便子作用可以访问父作用,通常是指沿着链式的作用链查找,而不能从父作用引用子作用域中的变量和引用 全局作用   变量在函数或者代码块{}外定义,即为全局作用。...说到这其实大家会想到嵌套函数的作用问题,如果 inner 函数再嵌套函数呢?这就涉及到另一个概念:作用链。   仔细观察上图,其实不难理解作用链是什么,因为你可以按照原型链那样去理解。...动态作用   在 JavaScript 中很多同学对 this 的指向时而清楚时而模糊,其实结合作用会对 this 有一个清晰的理解。... { a: 2 },而 this 指向的是当前作用对象,是不是可以清楚的理解了呢?

    41310

    js中的作用

    又是因为什么我们要用这个块级作用,本文与你一起探讨块级作用的场景以及所有细节问题。...es6之前的作用 特点1 :js只有函数级作用以及全局两种 特点2 :不通过var声明的变量直接赋值也可以用并且可以访问,原理是直接赋值到了window对象属性变量下,两者如果同时定义,那么会覆盖使用...,函数内可以访问外部作用,而全局是不可以访问函数作用内的变量或者方法的 var a=b=c=12 function demo(){ var z=13 console.log(b)//12...块级作用 场景一 循环中的块级作用 如果我们有一个遍历循环的绑定事件,并且需要把当前的指针绑定到对应方法中。...,通过这个案例也能更好的理解闭包。

    3.2K20

    JavaScript的作用和块级作用概念理解

    本文作者:IMWeb 秦至 原文出处:IMWeb社区 未经同意,禁止转载 作用 作用永远都是任何一门编程语言中的重中之重,因为它控制着变量与参数的可见性与生命周期。...说到这里我们需要理解两个概念:块级作用与函数作用。 函数作用 这个应该好理解,函数作用就是说定义在函数中的参数和变量在函数外部是不可见的。 大多数类C语言都拥有块级作用JS却没有。...块级作用 ---- 任何一对花括号中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用。...也就是说,JS并不支持块级作用,它只支持函数作用,而且在一个函数中的任何位置定义的变量在该函数中的任何地方都是可见的。 那么我们该如何使JS拥有块级作用呢?...是否还记得,在一个函数中定义的变量,当这个函数调用完后,变量会被销毁,我们是否可以用这个特性来模拟出JS的块级作用呢?

    65220

    java作用-我是这样理解JavaScript中作用

    深入理解作用,可让我们在编码过程当中更好的辨识哪些标识符的有效范围以及标识符的查找。   ...作用(scope)的分类   在这门语言中,采用词法作用;也就是当你在写代码时将变量和块级作用写在哪里来决定的。(ps:可理解为静态作用)。   与静态作用相对的是动态作用。...作用有:   全局作用   全局作用可以理解成变量的有效范围是在代码的任何一个位置都能访问到。   ...当函数执行完毕,内部变量的生命周期也会随之结束(ps:闭包除外)不会污染外部作用。   块级作用   块级作用在ES5是没有这样的概念的,但ES6的一些语法为js新增色彩。...这也验证了js是静态作用的概念。它和执行上下文是两个不同的概念。(ps:勿混淆)   执行上下文是根据在哪里调用执行确定执行上文,它是动态的。切记切记!!

    39220
    领券