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

java作用-什么JavaScript作用作用链?

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

1.9K20

js作用

前言 相信自从es6出来之后,你一定多少知道或者已经在项目中实践了部分的块级作用,在函数或者类的内部命名变量已经在使用let了,但是你知道它真正的作用什么吗?...又是因为什么我们要用这个块级作用,本文与你一起探讨块级作用的场景以及所有细节问题。...es6之前的作用 特点1 :js只有函数级作用以及全局两种 特点2 :不通过var声明的变量直接赋值也可以用并且可以访问,原理直接赋值到了window对象属性变量下,两者如果同时定义,那么会覆盖使用...块级作用 场景一 循环中的块级作用 如果我们有一个遍历循环的绑定事件,并且需要把当前的指针绑定到对应方法。...块级作用特性,区别就是定义变量时 i块级变量,所以定义的函数的变量也是当时的块级作用,不随外面非块级元素值变化影响 var arr=[] for(let i=0;i<10;i++){ arr

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

    什么Python变量作用

    在程序定义一个变量时,这个变量作用范围的,变量的作用范围被称为它的作用。 根据定义变量的位置,变量分为两种: 局部变量:在函数定义的变量,包括参数,都被称为局部变量。...这是什么原因呢?这正是由于程序在 test() 函数增加了“name=’孙悟空’”一行代码造成的。 Python 语法规定,在函数内部对不存在的变量赋值时,默认就是重新定义新的局部变量。...知识点扩展: python3 之 变量作用 作用: 指命名空间可直接访问的python程序的文本区域,这里的 ‘可直接访问’ 意味着:对名称的引用(非限定),会尝试在命名空间中查找名称; L:local...,局部作用,即函数定义的变量; E:enclosing,嵌套的父级函数的局部作用,即包含此函数的上级函数的局部作用,但不是全局的; G:globa,全局变量,就是模块级别定义的变量; B:built-in...,内建作用,系统固定模块里面的变量,比如:int,bytearray等 到此这篇关于什么Python变量作用的文章就介绍到这了,更多相关Python变量作用详解内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持

    67320

    JS作用下 21

    ES6之前和ES6分开研究 1.需要明确: 1.ES6定义变量通过let 2.ES6除了全局作用、局部作用以外, 还新增了块级作用...3.ES6虽然新增了块级作用, 但是通过let定义变量并无差异(都是局部变量) 2.ES6作用链 1.1.全局作用我们又称之为0级作用 2.2....定义函数或者代码块都会开启的作用就是1级/2级/3级/...作用 2.3.JavaScript会将这些作用链接在一起形成一个链条, 这个链条就是作用链 0...---> 1 ----> 2 ----> 3 ----> 4 2.4.除0级作用以外, 当前作用级别等于上一级+1 3.变量在作用链查找规则...3.1先在当前找, 找到就使用当前作用找到的 3.2如果当前作用域中没有找到, 就去上一级作用域中查找 3.3以此类推直到0级为止, 如果0级作用还没找到, 就报错

    1.3K20

    JS作用作用

    JS作用就是在一定的空间范围内对数据进行读写操作。 在JS中一个变量的作用(scope)程序定义这个变量的区域。 变量有全局变量和局部变量两种。...下面就要借助JS作用链来更好的理解作用了。 在此之前,先要明确个概念,即执行环境和作用两个完全不同的概念。 函数的每次调用都有与之紧密相关的作用和执行环境。...从根本上来说,作用基于函数的,而执行环境基于对象的(例如:全局执行环境即window对象)。 换句话说,作用涉及到所被调用函数的变量访问,并且不同的调用场景不一样的。...搜索过程始终从作用链的前端开始,然后逐级地向后(全局执行环境)回溯,直到找到标识符为止。 此外还要讲下JS作用域中的块级作用JS没有块级作用这个概念的。 什么块级作用呢?...JS并不支持块级作用,它只支持函数作用,而且在一个函数的任何位置定义的变量在该函数的任何地方都是可见的。 那么JS又该怎么拥有块级作用呢?

    4.1K30

    JS基础——作用作用

    作用 [[scope]],函数定义时自动生成的一个隐式属性,用来存储函数作用链 Scope Chain的容器。作用用来存储函数执行上下文 AO和全局执行上下文 GO的容器。...函数被定义时,系统会为函数生成[[scope]],[[scope]]中保存该函数的作用链,并从该作用链的起始位置开始存储当前环境的作用链。...,并将GO插入到作用链的起始位置。...函数a被执行前一刻,会生成函数a的AO,插入到其作用链的起始位置。 Tips:此时虽然函数a的AO已经有了函数b的引用,但是函数b还是未被定义的。...函数a被执行时,此时函数b也被定义,函数b的[[scope]]也在此时生成,其中存储函数b的作用链,并将当前环境的作用链插入函数b作用链的起始位置,即函数a的AO和GO。

    3.5K10

    JS作用

    JavaScript的作用有全局作用和局部作用 先通过一下代码来体验下作用 var x = 1; function f1(){ var y = 2; x = 10; console.log...(x); } console.log(y); //undefined 上面的代码运行后我想大家应该猜到了结果就是undefined 就是报如下的错误,也就是y个未定义的变量 VM42:7 Uncaught...ReferenceError: y is not defined at :7:13 上述代码变量x就是全局作用,方法f1的作用也是全局,f1方法的变量y局部的,y的作用范围仅限f1方法体内...,离开了f1的方法体的作用范围,就无法获取到y的值,所以上述的例子中最后打印y的时候undefined 我们再来看下面的例子 var a = 1; function f1(){ console.log...b = 2*a; var a = 20; var c = a+1; console.log(b); console.log(c); } f1(); 上面例子的输出结果是什么

    11310

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

    作用(scope)的分类   在这门语言中,采用词法作用;也就是当你在写代码时将变量和块级作用写在哪里来决定的。(ps:可理解为静态作用)。   与静态作用相对的动态作用。...作用有:   全局作用   全局作用可以理解成变量的有效范围在代码的任何一个位置都能访问到。   ...当函数执行完毕,内部变量的生命周期也会随之结束(ps:闭包除外)不会污染外部作用。   块级作用   块级作用在ES5没有这样的概念的,但ES6的一些语法为js新增色彩。...这也验证了js静态作用的概念。它和执行上下文两个不同的概念。(ps:勿混淆)   执行上下文根据在哪里调用执行确定执行上文,它是动态的。切记切记!!...关于执行上下文的一个属性this的指向可阅读这篇文章this关键字你真的彻底搞懂了吗   总结   再次学习作用之后,对于知识有新的认知。记录并分享一件很棒的过程~如有新的见解和问题评论区见!

    39220

    什么作用插槽?插槽与作用插槽的区别

    ,而不是在子组件里面 作用插槽渲染在子组件里面 1.插槽slot 在渲染父组件的时候,会将插槽的先渲染。...(插槽的作用为父组件,插槽HTML模板显示不显示、以及怎样显示由父组件来决定) 有name的父组件通过html模板上的slot属性关联具名插槽。没有slot属性的html模板默认关联匿名插槽。...2.作用插槽slot-scope 作用插槽在解析的时候,不会作为组件的孩子节点。会解析成函数,当子组件渲染时,会调用此函数进行渲染。...或者可以说成作用插槽子组件可以在slot标签上绑定属性值,在父组件可以拿到子组件的数据,通过子组件绑定数据传递给父组件。...// 作用插槽渲染在当前组件的内部,不是在父组件 四、源码 1.initRender(初始化render,构建vm.

    1.1K30

    js的块级作用

    在上一篇说到了作用,简单介绍了一下块级作用,在这里我们来详细介绍一下。 众所周知,在js函数作用常见的单元作用,也是现行的大多数js中最普遍的设计方案。...块作用一个用来对之前的最小授权原则进行扩展的工具,将代码从在函数隐藏信息扩展为在块隐藏信息。...为什么要把一个只在 for 循环内部使用(至少应该只在内部使用)的变量 i 污染到整个函数作用域中呢?所以块级作用在开发对于变量的管理以及垃圾回收很有用处的。...那么都有什么可以形成块级作用呢,下面我们来看一下 try/catch 这个东西相信很多人也都用过,但是我们大部分时间写代码都是在try块写的,不要认为try写的代码就是块级作用,其实里面声明的变量也会被声明为全局变量...也许 catch 分句会创建块作用这件事看起来像教条的学院理论一样没什么用处,很多人认为有病才会这么写代码,我为了声明一个块级作用变量还得强制抛出一个异常。

    2.6K10

    JS作用链上 20

    "的时候最好将ES6之前和ES6分开研究 1.需要明确: 1.ES6之前定义变量通过var 2.ES6之前没有块级作用, 只有全局作用和局部作用...3.ES6之前函数大括号外的都是全局作用 4.ES6之前函数大括号的都是局部作用 2.ES6之前作用链 2.ES6之前作用链...1.1.全局作用我们又称之为0级作用 2.2.定义函数开启的作用就是1级/2级/3级/...作用 2.3.JavaScript会将这些作用链接在一起形成一个链条..., 这个链条就是作用链 0 ---> 1 ----> 2 ----> 3 ----> 4 2.4.除0级作用以外, 当前作用级别等于上一级+1...3.变量在作用链查找规则 3.1先在当前找, 找到就使用当前作用找到的 3.2如果当前作用域中没有找到, 就去上一级作用域中查找 3.3以此类推直到0

    68120

    JS进阶:作用作用

    作用(Scope) 1.什么作用 作用在运行时代码的某些特定部分变量,函数和对象的可访问性。换句话说,作用决定了代码区块变量和其他资源的可见性。...全局作用有个弊端:如果我们写了很多行 JS 代码,变量定义都没有用函数包括,那么它们就全部都在全局作用域中。这样就会 污染全局命名空间, 容易引起命名冲突。...因为放在里面的所有变量,都不会被外泄和暴露,不会污染到外面,不会对其他的库或者 JS 脚本造成影响。这是函数作用的一个体现。...这表明函数内部的变量i与循环变量i不在同一个作用,有各自单独的作用作用链 1.什么自由变量 首先认识一下什么叫做 自由变量 。...100 function fn() { var b = 200 console.log(a) // 这里的a在这里就是一个自由变量 console.log(b) } fn() 2.什么作用

    2.6K20

    了解 JS 作用作用

    (1)作用 一个变量的作用(scope)程序源代码定义的这个变量的区域。 1....在JS中使用的词法作用(lexical scope) 不在任何函数内声明的变量(函数内省略var的也算全局)称作全局变量(global scope) 在函数内声明的变量具有函数作用(function...JS的声明提前 js的函数作用指在函数内声明的所有变量在函数体内始终是可见的。...引入一大段话来解释: 每一段js代码(全局代码或函数)都有一个与之关联的作用链(scope chain)。 这个作用一个对象列表或者链表,这组对象定义了这段代码作用域中”的变量。...作用链举例: 在js最顶层代码(也就是不包括任何函数定义内的代码),作用链由一个全局对象组成。

    2K10

    js作用详解

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

    2.5K10
    领券