首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

什么的用途是什么

什么: 如果一个函数用到了它作用域外面的变量,那么这个变量和这个函数之间的环境就叫。...var a = 5 function xx(){ console.log(a) } //5 的用途有些什么: 1.模仿块级作用域 所谓块级作用域就是指在循环中定义的变量,一旦循环结束,变量也随之销毁...console.log(i)//undefined } 在上面的代码中,就是那个匿名函数,这个可以当函数X内部的活动变量,又能保证自己内部的变量在自执行后直接销毁。...2.储存变量 的另一个特点可以保存外部函数的变量,内部函数保留了对外部函数的活动变量的引用,所以变量不会被释放。...3.封装私有变量 我们可以把函数当作一个范围,函数内部的变量就是私有变量,在外部无法引用,但是我们可以通过的特点来访问私有变量。

1.8K20

js 什么

什么(closure): 可以访问其他函数内部定义的变量的函数。在js中,只有函数内部的子函数才能访问到局部变量,所以,可以理解为"定义在一个函数内部的函数"。...在本质上,将函数内部和函数外部连接起来的桥梁。 2. 变量作用域 理解,首先必须理解变量作用域。JavaScript 有两种作用域:全局作用域和函数作用域。...,有函数嵌套,有父函数变量给子函数引用,形成依赖关系,产生环境。...在内存中维持一个变量(js不会销毁;用的太多就变成了缺点,占内存); 方便调用上下文的局部变量。 缺点: 常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。...内存浪费问题,这个内存浪费不仅仅因为它常驻内存,更重要的,对的使用不当会造成无效内存的产生。

5.4K20

什么JavaScript 的???

Javascript的指一个函数与周围状态(词法环境)的引用捆绑在一起(封闭)的组合,在JavaScript中,每次创建函数时,都会同时创建。...一种保护私有变量的机制,在函数执行时形成私有的作用域,保护里面的私有变量不受外界干扰,即形成一个不销毁的栈环境。 阅读本文前需要了解JS局部变量和全局变量。...2 JS 要想让add读取到局部变量counter ,可以把add函数放到,myCounter函数里面,所以改变代码如下: function myCounter() { var counter...这是因为JavaScript中的函数会形成由函数以及声明该函数的词法环境组合而成的。该环境包含了这个创建时作用域内的任何局部变量。...这些由他们的函数定义和在 setupHelp 作用域中捕获的环境所组成的。这三个包在循环中被创建,但他们共享了同一个词法作用域,在这个作用域中存在一个变量item。

1.1K41

深入理解JavaScript什么

一个真实的面试场景 A: 什么 B: 函数 foo 内部声明了一个变量 a, 在函数外部访问不到的,就是可以使得在函数外部访问函数内部的变量 A:额,不太准确,那你说一下什么用途吧 B...什么 当函数可以记住并访问所在的词法作用域时,就产生了,即使函数在当前词法作用域之外执行的。...用一句话描述:指有权访问另一个函数作用域中变量的函数。创建最常见的方式就是,在一个函数内部创建另一个函数。...为什么总是 JavaScript 中的应用都有着关键词 “return”, javaScript 秘密花园 中有一段话解释到:JavaScript 一个非常重要的特性,这意味着当前作用域总是能够访问外部作用域的变量...因为这个赋值表达式函数本身,所以此时调用,this 指向的 window,打印的 "The window" 关于什么就大概说到这里,下一篇文章会讲一下的应用场景。

80230

js

目录 的概念 的用途 代码实例 注意点 两个代码片段的对比 的概念 简单来说,就是定义在一个函数内部的函数 的用途 可以读取函数内部的变量 让这些变量的值始终保持在内存中...在nAdd前面没有使用var关键字,因此 nAdd 一个全局变量,而不是局部变量。 nAdd的值一个匿名函数(anonymous function),而这个匿名函数本身也是一个。...函数调用相当于后面有两个括号,因为函数f1返回的函数名f2。...注意点及解决方法 由于会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用,否则会造成网页的性能问题,在IE中可能导致内存泄露。...会在父函数外部,改变父函数内部变量的值。 解决方法:不要随便改变父函数内部变量的值。 返回时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量。

2.3K30

JS

JS用法给开发带来了极大的便利,它的使用方式非常自然,以至于很多同学并不很了解,却可以在实际开发中顺畅的使用了 例如下面的代码,给button添加一个点击事件,很多人经常这么写,实际上这就是一个...要了解,需要先了解下JS变量的作用域 变量的作用域无非就是两种:全局变量和局部变量 特点 函数内部可以访问外部变量,函数外部不能访问函数内的变量 例如 ?...这个实现方式就是 什么 其实就是将函数内部和函数外部连接起来的一座桥梁,可以让函数外部的代码访问函数内容变量,可以把简单理解成“定义在一个函数内部的函数” 包在子作用域中保存了一份在父级作用域取得的变量...,这些变量不会随父级作用域的销毁而销毁,因为他们已经常驻内存了 应用示例 (1)实现公共、私有作用域控制 既然可以对外提供访问内容变量的方式,就可以用这个特点实现类似 public private...实际运行后,会发现,不管点击哪个输入框,都会提示年龄的信息 下面的正确方式,可以按照需求正常显示 ?

4.2K40

JS

定义 一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。...就是在另一个作用域中保存了一份它从上一级函数或者作用域得到的变量,而这些变量不会随上一级函数的执行完成而销毁。 前提条件 计算机中的内存变量如果有被引用着的话,则系统不会将之回收的。...只要我们能够一直持有这个引用,则就可以令局部变量避免被回收——这是概念成立的前提 用途 可以读取到函数内部的变量 可以让函数内部变量保持在内存中 避免全局变量的污染 私有成员的存在...注意事项 会让函数中的变量都被保存到内存中,内存消耗较大,不能滥用,否则会导致性能和内存泄漏问题(退出函数之前可以将不用的局部变量全部删除) 能改变父函内部变量的值,一定要小心使用 示例

2.5K110

JS

JS 概念 能够读取其他函数内部变量的函数 定义在一个函数内部的函数,内部函数持有外部函数内变量的引用 简单来说,指可以访问另一个函数作用域变量的函数,一般定义在外层函数中的内层函数,但并不仅仅是一个函数...js中函数内部可以读取全局变量,函数外部不能读取函数内部的局部变量。...为什么需要 局部变量无法共享和长久的保存,而全局变量可能造成变量污染,所以我们希望有一种机制既可以长久的保存变量又不会造成全局污染 何时使用?...外层函数返回内层函数的对象,并且外层函数被调用,结果保存在一个全局的变量中 从外部读取函数内部的变量 function f1(){ var n = 123; function f2(){ //f2一个...alert(n) } return f2; } js链式作用域:子对象会一级一级向上寻找所有父对象的变量,反之不行。

2.5K50

死磕JS到底什么鬼?

有多重要?如果你初入前端的朋友,我可以肯定得告诉你,前端面试,必问。面试官们常常用对的了解程度来判定面试者的基础水平,保守估计,10个前端面试者,至少5个都死在包上。...通过本文讲解,希望你可以重新认识一下! 我们开始吧~ 函数调用时发生了什么? 为了理解,首先我们需要完全理解 JavaScript 到底如何工作的! 那么函数调用是会发生什么呢?...什么鬼?...如果你想知道到底有什么用,请继续看下面的示例。 01 模块封装 允许我们保护或隐藏某些信息。[[scope]] 一个隐藏的属性,所以我们不能像使用标准对象那样访问和更新它。...在《面向对象分析与设计》这本书里有一句话对的概括我很喜欢,他这样说的: “懒人的对象,对象是天然的!” 慢慢悟吧,欢迎评论交流,周末愉快~

32320

js

先展示两段代码块看看到底有什么区别 function foo(x) { var tmp = 3; return function (y) { alert(x + y +...代码块①出现了。 准确来说 ?  这块就是一个基于正常的垃圾回收处理机制下的。也就是说,一般情况一个函数(函数作用域)执行完毕, 里面声明的变量会全部释放,被垃圾回收器回收。...但利用一个技巧,让作用域里面的变量, 在函数执行完之后依旧保存没有被垃圾回收处理掉。 或者说一下我现在的一个需求 我需要在for循环里面进行事件的绑定,这个应该怎么操作?...第一反应是这样(原生js) window.onload=function(){ var list = ['a','b']; for(var i in list){...)(i) } } aaa bbb 使用来解决

3.7K30

JS

在理解以前.最好能先理解一下作用域链的含义,简单来说,作用域链就是函数在定义的时候创建的,用于寻找使用到的变量的值的一 个索引,而他内部的规则是,把函数自身的本地变量放在最前面,把自身的父级函数中的变量放在其次...了解了作用域链,我们再来看看js的内存回收机制,一般来说,一个函数在执行开始的时候,会给其中定义的变量划分内存空间保存,以备后面的语句所用,等到函数执行完毕返回了,这些变量就被认为无用的了.对应的内存空间也就被回收了....下次再执行此函数的时候,所有的变量又回到最初的状态,重新赋值使用.但是如果这个函数内部又嵌套了另一个函数,而这个函数有可能在外部被调用到的.并且这个内部函数又使用了外部函数的某些变量的话.这种内存回收机制就会出现问题...(自由变量))一起保存起来.也就是构建一个,这些变量将不会被内存回收器所回收,只有当内部的函数不可能被调用以后(例如被删除了,或者没有了指针),才会销毁这个,而没有任何一个引用的变量才会被下一次内存回收启动时所回收...Js代码 var n=999; function f1(){ alert(n); } f1(); // 999 另一方面,在函数外部自然无法读取函数内的局部变量。

2.5K50

什么,我悟了

的概念: 就是一种函数的保护/保存机制。...会生成私有上下文,在私有上下文中申明的变量或者函数,会受到私有上下文的保护,不受外界影响; 所谓保存,就是说私有上下文中所创建的堆内存,被当前私有上下文以外的变量所占用,那么当前私有上下文就得不到释放,这就是常说的...的优点: 防止变量全局污染,封闭作用域,防止受到外界影响 的缺点: 内存泄漏,占用内存较大,影响页面渲染 大家不妨打开控制台试试下面代码,运行结果是否如你所想 //lg1 var a = 10,...; } } var f = fn(); console.log(f(5)); console.log(fn()(5)); console.log(f(5)); console.log(a); 的底层原理...前置知识点: 1.变量的生命周期 全局变量需等到浏览器关闭页面后才结束生命周期 局部变量,等到局部函数执行完毕就结束生命周期 2.垃圾回收机制 当一个变量声明周期结束之后它所指向的内存就应该被释放掉 js

32730

再谈JS

块级作用域 不同的作用域能够拥有同名的变量 外部作用域的变量可以在内部作用域中访问 JS通过「词法作用域」(静态作用域)来实现变量查询机制 「(closure)一个函数」:其有权访问其词法作用域内部的变量即使该函数在词法作用域外部被调用...只有在了解了这些概念,我们才会对的认识有的放矢。 1. 作用域 当你定义一个变量,你想要该变量在某些范围内「可访问的」。...innerFunc()一个:它记住了来自它词法作用域内的变量(outerVar)。...一图胜千言 我们可以得出如下结论 ❝「(closure)一个函数」:其有权访问其词法作用域内部的变量即使该函数在词法作用域外部被调用 ❞ 更简单的讲:一个函数,它会从定义它的地方记住变量,...}, 1000); callback一个,它捕获了message外部变量。

2.8K30

JS总结

的用途 1.防止全局变量污染 在JavaScript中全局变量个不小的毒瘤,全局变量有时很方便,但是很多项目滥用全局变量成灾,维护起来非常困难。...4.私有成员封装 这个比较常用的,JavaScript中并没有很多语言中拥有的访问控制,所以我们可以使用来达到私有化的目的: ?...5.制作缓存池 这个用途使用了里的局部变量不会被销毁的特点,实现缓冲池的方法有很多,使用只是其中一种,大家可以看自己的情况来使用,下面使用来实现缓存池简单大意的例子: ?...6.循环中保存索引 开发过程中在循环里注册回调很常见,但是刚接触js的同学常常会遇到注册完了回调,发现索引值不对,可以看下面的例子: ?...总之有很多地方用起来很方便,的特性也能帮助我们实现很多巧妙的设计,但是也会引起很多问题,所以在开发过程中应该尽量少用

2.3K41
领券