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

重学JS基础-作用

一,作用作用 1.全局作用 JS有一个全局对象,window,在全局声明的变量都属于window的属性,未使用声明符声明的属性也是window的属性。...当内部函数被保存到外部时,将会生成。...生成后,内部函数依旧可以访问其所在的外部函数的作用。 1.原理 在内部函数被定义的时候会创建一个属于内部函数的scope属性保存着的作用,它会直接继承父函数的作用....当它有对父级函数的变量的访问时,这个作用在父级函数销毁时不会被销毁,此时内部函数依旧可以访问父级函数的变量。...4.的优缺点 的好处 希望一个变量长期存储在内存中 避免全局变量的污染 私有成员的存在 用于缓存的坏处 容易造成内存泄漏 使用定义对象的私有变量 var Person = (function

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

深入理解变量对象、作用

执行上下文、执行栈、作用,这其实是一整套相关的东西,之前转载的文章也有讲到这些。下面两篇文章会更加详细地解释这些概念。...深入理解执行上下文和执行栈 深入理解变量对象、作用 1.前言 首先引用下winter大的原话: 在ES3中,执行上下文包含三个部分: 1.scope: 作用,也常常被叫做作用。...4.1 定义 作用其实就是所有执行上下文的变量对象的列表。...这是通过达成约定使用静态作用来解决的。静态作用也就是词法作用(这也是词法环境这个名称的由来),它是通过捕获函数创建所在的环境来实现的,因而会到函数创建时保存起来的静态作用中进行变量查询。...动态作用是在当前活跃的动态(而不是在函数创建时保存起来的静态作用)中进行变量查询的。对于上面的代码,如果是动态作用,将输出20而不是10。

68610

js函数、作用

2、分类: 在 ES5 的规范中,Javascript 只有两种作用: 一种是全局作用,变量在整个程序中一直存在,所有地方都可以读取; 另一种是函数作用,变量只在函数内部存在。...4、作用规则 {}不产生一个作用,定义函数才会产生一个函数作用 函数在执行的过程中,先从自己内部找变量 如果找不到,再从创建当前函数所在的作用去找, 以此往上 var a = 1 function...1、定义: 函数连同它作用上的要找的这个变量,共同构成 2、特点 最大的特点,就是它可以“记住”诞生的环境,在本质上,就是将函数内部和函数外部连接起来的一座桥梁。...3、用处 的最大用处有两个 可以读取函数内部的变量 暂存数据(让这些变量始终保持在内存中,即可以使得它诞生环境一直存在) 4、举个栗子 如果没有这个,函数执行后,里面speed变量就会被清理掉...function(j){ return function(){ return j } })(i) } console.log( fnArr[3]() ) // 3 四、作用

1.4K20

JS知识点梳理--作用作用、柯里化、

一、作用作用作用是指 js 变量使用时所存在的一个区域,分为全局作用(window)和局部作用(function、setTimeout...等都会产生局部作用)。...console.log(b)上面这种一层层向外查询变量的过程叫做查询作用。而这种一层层局部作用直到全局作用的结构被称为作用。...也正因如此,才会有内存泄漏的风险,需要在每次使用完后立刻清除。的形成:当前环境中存在指向父级作用的引用。2....作用使用的目的――隐藏变量,间接访问一个变量,在定义函数的词法作用域外,调用函数。通常在回调函数、私有属性、函数柯里化中使用。4....使用实现多个图片点赞功能使用完成,多图点赞单独点赞功能,且每个 input 的点赞数量互不干扰。在这个例子中利用声明了 5 个新的独立词法作用。<!

49930

原型原型作用作用

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

28210

JS知识点梳理之作用作用、柯里化、

一、作用作用作用是指 js 变量使用时所存在的一个区域,分为全局作用(window)和局部作用(function、setTimeout...等都会产生局部作用)。...console.log(b)上面这种一层层向外查询变量的过程叫做查询作用。而这种一层层局部作用直到全局作用的结构被称为作用。...也正因如此,才会有内存泄漏的风险,需要在每次使用完后立刻清除。的形成:当前环境中存在指向父级作用的引用。2....作用使用的目的――隐藏变量,间接访问一个变量,在定义函数的词法作用域外,调用函数。通常在回调函数、私有属性、函数柯里化中使用。4....使用实现多个图片点赞功能使用完成,多图点赞单独点赞功能,且每个 input 的点赞数量互不干扰。在这个例子中利用声明了 5 个新的独立词法作用。<!

42220

作用原型的区别_原型作用

题外话:最近面试一直被问到作用的问题,所以还是要深入透彻的学习一下这两个概念。 作用 在红宝书中对作用的描述有这么一段话:当代码在一个环境中执行时,会创建变量对象的一个作用。...在创建compare()函数时,会创建一个预先包含全局变量对象的作用,这个作用会被保存在内部的[[Scope]]属性中。...作用 无论什么时候在函数中访问一个变量时,就会从作用中搜索具有相应名字的变量。一般来讲,当函数执行完毕后,局部活动对象就会被销毁,内存中仅保存全局作用(全局执行环境的变量对象)。...但是的情况又有所不同。...作用知识总结 当代码在一个环境中执行时,都会创建一个作用作用的用途是保证对执行环境有权访问的所有变量和函数的有序访问。整个作用的本质是一个指向变量对象的指针列表。

43040

深入理解作用

这样的设计规则很强大,但是也会引发不少的问题,比如我们本文即将要讨论的作用,欢迎各位感兴趣的开发者阅读本文。 原理解析 理解作用之前,我们需要先来深入解析下变量。...上述示例代码中,obj与tomObj都指向了堆内存中的同一个位置,tomObj的指针指向了obj,在深入理解原型与继承 文章中,我们知道对象是拥有原型的,因此当我们向obj中添加了name属性,tomObj...全局上下文的变量对象,始终是作用的最后一个变量对象。 代码执行时的标识符解析是通过沿作用逐级搜索标识符名称完成的,搜索过程始终从作用的最前端开始,逐级往后,直到找到标识符。...因此,这里就产生了一个结构,selfAdd函数上下文中的变量生命就被延续了 接下来,我们通过一个例子来讲解下作用: <!...i时,会先找到被封闭在环境中的i 代码中有5个div,因此这里的i分别就是0, 1, 2, 3, 4,符合了我们的预期 巧用块级作用 在上述代码的for循环表达式中,使用var定义了变量i,我们在函数作用章节讲过

49830

作用

当函数可以记住并访问所在的词法作用,即使函数是在当前词法作用之外执行,这时就产生了。...# 的实质 当函数可以记住并访问所在的词法作用时,就产生了,即使函数是在当前词法作用之外执行。...bar() 依然持有对该作用的引用,而这个引用就叫作。 bar() 函数在定义时的词法作用以外的地方被调用。使得函数可以继续访问定义时的词法作用。...timer 具有涵盖 wait() 作用,因此还保有对变量 message 的引用。...wait() 执行 1000 ms 后, 它的内部作用并不会消失, timer 函数依然抱有 wait() 作用深入到引擎的内部原理中,内置的工具函数 setTimeout(..)

67220

JavaScript进阶--原型原型

__proto__.constructor==Person原型js中,大部分东西都是对象,数组是对象,函数也是对象,对象更加是对象。...同理,Foo.prototype和其他自定义的对象也是__proto__指向Object.prototype对象 Object.prototype就是原型的终点了,它的__proto__是null,js...查找属性时,如果到这里还没有找到,那就是undefined了函数和函数内部能访问到的变量加在一起就是一个常规认为,一个函数嵌套另一个函数,两个函数中间的环境,叫,但其实这也是制造一个不会被污染沙箱环境...,实质上,由于js函数作用的存在,所有的函数,都可以是一个function foo(){ var num = 1 function add(){ num++ return num...所以只要懂了 JS作用,自然而然就懂了

46610

JavaScript 实践+理论(总结篇):作用、this、对象原型

JavaScript 实践+理论(总结篇):作用、this、对象原型 作用 第一章 作用是什么 • 作用:根据标识符查找变量的一套规则。...第五章 作用 1. 何为:当函数可以记住并访问所在的词法作用时,即使函数在当前词法作用之外执行,这时就会产生。 2. 严格意义上来说,一个函数返回另一个函数。 3....空的 IIFE 并不是,虽然通过 IIFE 改造有用了更多的词法作用,但在 IIFE 中的所创建的作用是封闭起来的。只能通过从外传入一个参数到 IIFE 中被使用时,才是。...直到找到属性或找到完整的原型。...何为原型? • [[Prototype]] 的作用: 如果在对象上没有找到需要的属性或方法引用,引擎就会技术在 [[Prototype]] 关联的对象进行查找。

5810

JS执行上下文作用

---- 二、作用 1、变量作用 全局变量:在全局声明的变量,任何地方都可以访问 局部变量:在函数里声明的变量,只有函数里内访问 ——几个注意点: 1)声明局部变量必须用var,不然会污染全局变量...—— return 2、函数作用 js没有块级作用,而有函数作用。 函数作用是指:在函数内声明的所有变量在函数体内是始终可见的。...---- 三、 什么是 参考:学习Javascript(Closure)——阮一峰 有权访问另一个函数作用域中的变量的函数 定义在一个函数内部的函数   function f1(){     ...function f2(){       alert(n);     }     return f2;   }   var result=f1();   result(); // 999 f2()就是...作用 ---- 四、this 全局函数里,this 等于window 函数被作为某个对象的方法调用时,this等于那个对象 匿名函数执行环境具有全局性,this指向window (可以通过call

1.2K30

重学JS-8-函数作用

思维导图 通过下面的思维导图,我们先对JavaScript的函数作用一些基本的了解。 函数作用 作用决定了变量的可访问性,全局作用,局部作用(函数作用)。...let和const具有块作用,块级作用包括在函数内部和在一个代码块内部。 作用 表示不同作用里面,有多个同名变量,变量的优先次序。...例如在下面的例子中,a变量的作用是:局部变量a(banana)->全局变量a(apple),优先取到局部变量。...也就是说,让你可以在一个内层函数中访问到其外层函数的作用。在 JavaScript 中,每当创建一个函数,就会在函数创建的同时被创建出来。...创建阶段 创建作用、变量对象、决定this。 执行阶段 变量赋值、函数引用等。

33820

浅谈javascript中的的作用引出利用突破作用的三种方法小结

像是一种突破javascript中作用限制的利剑。下面我们就从javascript中的作用谈起,简单讲讲的概念和理解。...,也来自他的父亲作用,也就函数outer,所以这样就形成了一条作用。...利用突破作用的三种方法 下面我们具体讲解三种使用突破作用的方法。 1 首先,我们对上面那个函数做一些修改。...小结 看完上面三种创建的方式,我们是不是对有了一定的模糊的认识或者印象。  事实上每个函数都可以认为是,因为每个函数都在其所在的作用内维护了某种私有关系的联系。...现在我们可以说,如果一个函数会在其父级作用返回之后留住对父级作用的连接的话,相关的就会被创建起来。

63810

JavaScript 的静态作用与“动态”

为了解决这个问题,JavaScript 设计了的机制。 怎么设计? 先不看答案,考虑一下我们解决这个静态作用中的父作用先于子作用销毁怎么解决。 首先,父作用要不要销毁?...调用 func3 的时候,JS 引擎 会取出 [[Scopes]] 中的打包的 Closure + Global ,设置成新的作用, 这就是函数用到的所有外部环境了,有了外部环境,自然就可以运行了...但是 JS 引擎只处理了直接调用,也就是说直接调用 eval 才会打包整个作用,如果不直接调用 eval,就没法分析引用,也就没法形成包了。 ?...给包下个定义 用我们刚刚的试验来给包下个定义: 是在函数创建的时候,让函数打包带走的根据函数内的外部引用来过滤作用剩下的。它是在函数创建的时候生成的作用的子集,是打包的外部环境。...父函数销毁,栈帧对应的内存马上释放,用到的 ssh Obj 会被 gc 回收,而返回的函数会把作用过滤出用到的引用形成放在堆中。

61830

进阶 | 详细图解作用

1、作用息息相关; 2、是在函数执行过程中被确认。 先直截了当的抛出的定义:当函数可以记住并访问所在的作用(全局作用除外)时,就产生了,即使函数是在当前作用之外执行。...这样,我们就可以称foo为。 下图展示了foo的作用。 我们可以在chrome浏览器的开发者工具中查看这段代码运行时产生的函数调用栈与作用的生成情况。如下图。...(六),教大家如何在chrome中观察作用,this等。...在面向对象的开发中,我们常常需要考虑是将变量作为私有变量,还是放在构造函数中的this中,因此理解,以及原型是一个非常重要的事情。...此图中可以观看到当代码执行到add方法时的调用栈与作用,此刻的为外层的自执行函数 为了验证自己有没有搞懂作用,这里留下一个经典的思考题,常常也会在面试中被问到。

54421

JS作用作用

下面就要借助JS作用来更好的理解作用了。 在此之前,先要明确个概念,即执行环境和作用是两个完全不同的概念。 函数的每次调用都有与之紧密相关的作用和执行环境。...作用包含了执行环境栈中的每个执行环境对应的变量对象。通过作用,可以决定变量的访问和标识符的解析。 注意:全局执行环境的变量对象始终都是作用的最后一个对象。...搜索过程始终从作用的前端开始,然后逐级地向后(全局执行环境)回溯,直到找到标识符为止。 此外还要讲下JS作用域中的块级作用JS中是没有块级作用这个概念的。 什么是块级作用呢?...var i=0;i<4;i++){ } })(); alert(i); } test(); //弹出i未定义的错误 这里是把for语句放到中...其实也就相当于在for语句外面加了一层函数作用,而JS的函数作用执行完毕后是里面的变量就是销毁的哦!异曲同工啊。 有关闭,这个单独一个章节来研究,这里不展开来说了。 最后再来个小例子收工。

4.1K30
领券