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

说说js变量作用垃圾回收

JS 中每个执行环境都有一个与之关联的变量对象,在 Web 浏览器中,全局执行环境是 window 对象,因此所有全局变量函数都是作为 window 对象的属性方法创建的。...其中,内部环境可以通过作用链访问所有的外部环境,但外部环境不能访问内部环境中的任何变量函数。 这些环境之间的联系是线性的、有次序的。...每个环境可以向上搜索作用链 ,以查询变量函数名;但任何环境都不能通过向下搜索作用链而进入另一个执行环境。参考 前端面试题详细解答延长作用链。...虽然 js 没有块级作用,但我们可以用匿名函数来模仿块级作用~,语法格式如下:(function() { // 这里是块级作用;}) ();将函数声明包含在一对圆括号里,表示它实际上是一个函数表达式...ok,JavaScript 基础的变量作用垃圾回收咱就先讲到这,下一篇会聊聊 JavaScript 面向对象的程序设计函数表达式。

54730

细说js变量作用垃圾回收

JS 中每个执行环境都有一个与之关联的变量对象,在 Web 浏览器中,全局执行环境是 window 对象,因此所有全局变量函数都是作为 window 对象的属性方法创建的。...其中,内部环境可以通过作用链访问所有的外部环境,但外部环境不能访问内部环境中的任何变量函数。 这些环境之间的联系是线性的、有次序的。...每个环境可以向上搜索作用链 ,以查询变量函数名;但任何环境都不能通过向下搜索作用链而进入另一个执行环境。延长作用链。...虽然 js 没有块级作用,但我们可以用匿名函数来模仿块级作用~,语法格式如下:(function() { // 这里是块级作用;}) ();将函数声明包含在一对圆括号里,表示它实际上是一个函数表达式...ok,JavaScript 基础的变量作用垃圾回收咱就先讲到这,下一篇会聊聊 JavaScript 面向对象的程序设计函数表达式。

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

JS作用作用

JS中的作用就是在一定的空间范围内对数据进行读写操作。 在JS中一个变量作用(scope)是程序中定义这个变量的区域。 变量有全局变量和局部变量两种。...下面就要借助JS作用链来更好的理解作用了。 在此之前,先要明确个概念,即执行环境作用是两个完全不同的概念。 函数的每次调用都有与之紧密相关的作用执行环境。...作用链包含了执行环境栈中的每个执行环境对应的变量对象。通过作用链,可以决定变量的访问标识符的解析。 注意:全局执行环境的变量对象始终都是作用链的最后一个对象。...任何一对花括号({})中的语句集都属于一个块,在这之中定义的所有变量在代码块外都是不可见的,我们称之为块级作用。 函数作用就好理解了,定义在函数中的参数变量在函数外部是不可见的。...JS并不支持块级作用,它只支持函数作用,而且在一个函数中的任何位置定义的变量在该函数中的任何地方都是可见的。 那么JS又该怎么拥有块级作用呢?

4.1K30

夯实JS系列--变量作用内存问题

正好在空闲上下班地铁上都会再去细读js原生知识。所以打算整理、总结、系统性的分享给大家。 基本类型引用类型 在ECMAScript中,变量分为基本类型引用类型两种。 基本类型就是存储简单的数据段。...全局执行环境知道应用程序退出才被销毁(如关闭网页等) 当代码在一个环境中执行的时候,会创建变量对象的一个作用链。作用链的用途,是保证对执行环境有权访问的变量函数的有序访问。...作用链的前端,始终是当前执行的代码所在的 环境的变量对象。全局执行环境始终是作用链的最后一个对象。 标识符的解析也就是沿着作用链一级一级的搜索的过程。...延长作用链 虽然执行环境的类型只有两种。局部的全局的。但是还有一种方法可以延长作用链。 这是因为有些语句可以在作用链的前端临时添加一个变量对象,改变量对象会在代码执行后被移除。...关于作用、环境之类的话题后续会再细说。这里作为基础篇,就先介绍到这里。 垃圾收集 很开心js不需要你来收拾垃圾!好此篇完结! 好吧~虽然我们不收拾垃圾,但是也是要稍微了解下js是如何收拾垃圾的。

70320

JS进阶:作用作用

作用(Scope) 1.什么是作用 作用是在运行时代码中的某些特定部分中变量,函数对象的可访问性。换句话说,作用决定了代码区块中变量其他资源的可见性。...全局作用有个弊端:如果我们写了很多行 JS 代码,变量定义都没有用函数包括,那么它们就全部都在全局作用域中。这样就会 污染全局命名空间, 容易引起命名冲突。...因为放在里面的所有变量,都不会被外泄暴露,不会污染到外面,不会对其他的库或者 JS 脚本造成影响。这是函数作用的一个体现。...函数作用,是指声明在函数内部的变量全局作用相反,局部作用一般只在固定的代码片段内可访问到,最常见的例如函数内部。...正因为如此, ES6 引入了块级作用,让变量的生命周期更加可控。 3.块级作用 块级作用可通过新增命令letconst声明,所声明的变量在指定块的作用域外无法被访问。

2.5K20

python 变量作用

变量作用 python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。 变量作用决定了在哪一部分程序可以访问哪个特定的变量名称。...python的作用一共有4种,分别是: L (Local) 局部作用 E (Enclosing) 闭包函数外的函数中 G (Global) 全局作用 B (Built-in) 内建作用 以 L...x = int(2.9)  # 内建作用 g_count = 0  # 全局作用 def outer():     o_count = 1  # 闭包函数外的函数中     def inner():...name)     #局部变量,这个函数就是这个变量作用     name = "Zhang San"     print("after change", name) change_name(name...全局变量作用是整个程序,局部变量作用是定义该变量的子程序。 当全局变量与局部变量同名时: 在定义局部变量的子程序内,局部变量作用;在其它地方全局变量作用

66430

重学js之JavaScript 变量作用内存问题

在 safari chrome 中使用 typeof 检测正则表达式时,这个操作符会错误地返回 function 1.7 执行环境及作用 执行环境是js中最为重要的一个概念。...当代码在一个环境中执行时,会创建由变量对象构成的一个作用链,作用链的用途,是保证对执行环境有权访问的所有变量函数的有序访问。作用的前端,始终都是当前执行的代码所在环境的变量对象。...重点: 在一个特定的执行环境中,内部环境可以通过作用链访问所有的外部环境,但外部环境不能访问内部环境中的任何变量函数。...这些环境之间的联系是线性、有次序的,每个环境都可以向上搜索作用链,以查询变量函数名;但任何环境都不能通过向下搜索作用链而进入另外一个执行环境。...每次进入一个新执行环境,都会创建一个用于搜索变量函数的作用链。 函数的局部环境不仅有权访问函数作用域中的变量,而且有权访问其包含(父)环境,乃至全局环境。

73420

【JavaScript】作用 ① ( JavaScript 作用 | 全局作用 | 局部作用 | JavaScript 变量 | 全局变量 | 局部变量 )

可维护性 , 避免 命名冲突 , 在不同的作用域中 , 可以使用相同的名称 ; 2、全局作用 局部作用 JavaScript 的 作用 分为 全局作用 局部作用 两种类型 : 全局作用...: 在代码 的 任何地方都能访问到的变量就处于全局作用域中 , 具体指的就是 标签中 , 或者 单独的 js 文件中 ; 局部作用 : 在 代码块 内 定义 的变量具有局部作用...局部作用 function add() { // 该 num 变量 num2 变量 都是局部变量 // 这两个变量只能在 函数的内部可以访问...变量 出现了 命名冲突 , 这不会影响到 局部变量的 使用 ; 在 局部作用 中 , 相同名称 的变量作用变量 优先级较高 ; 二、JavaScript 变量 1、全局变量 局部变量...JavaScript 变量 根据 其 被声明的 作用类型 , 分为 全局变量 : 在 全局作用 声明的变量 , 就是全局变量 , 全局作用就是 标签中 或者 js

9710

变量作用内存问题

下述内存主要讲述了《JavaScript高级程序设计(第3版)》第4章关于“变量作用内存问题”。...执行环境作用 所有变量都存在一个执行环境(也成为作用)当中,这个执行环境决定了变量的生命周期,以及哪一部分代码可以访问其中的变量。...(1)每次进入一个新执行环境,都会创建一个用于搜索变量函数的作用链。 (2)函数的局部环境不仅有权访问函数作用域中的变量,而且有权访问其包含父环境,乃至全局环境。...(3)全局变量只能访问全局环境中定义的变量函数,不能直接访问局部环境中的任何数据。 (4)变量的执行环境有利于确定该如何释放内存。...使用new操作符创建的引用类型的实例,在执行流离开当前作用之前都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁。

58131

python 变量作用列表

变量作用 变量作用范围限制 分类:按照作用分类 全局(global):在函数外部定义 局部(local):在函数内部定义 变量作用范围 全局变量:在整个全局范围都有效 全局变量在局部可以使用(即函数内部可以访问函数外部定义的变量...) 局部变量在局部范围可以使用 局部变量在全局范围无法使用 LEGB原则 L(Local)局部作用 E(Enclosing function local)外部嵌套函数作用 G(Global module...)函数定义所在模块作用 B(Buildin):python内置模块的作用 # 认为a1是全局的 a1 = 100 def fun(): print(a1) print("I am...fun 99 提升局部变量为全局变量 使用global 案例如下 def fun(): global b1 b1 = 100 print(b1) print("I am...显示出局部变量全局变量 参考一下案例 # globals locals # globals locals 叫做内建函数 a = 1 b = 2 def fun(c,d): e = 111

1K107

前端学习(34)~js学习(十一):作用变量提升

作用的分类 全局作用作用于整个 script 标签内部,或者作用一个独立的 JS 文件。 函数作用(局部作用):作用于函数内的代码环境。...作用的访问关系 在内部作用域中可以访问到外部作用变量,在外部作用域中无法访问到内部作用变量。...说明 外层作用 无法访问 内层作用 里的变量 变量作用 根据作用的不同,变量可以分为两类:全局变量、布局变量。 全局变量: 在全局作用下声明的变量,叫「全局变量」。...(比如说,全局作用函数作用都定义了变量a,如果想访问全局变量,可以使用window.a) 全局作用 直接编写在script标签中的JS代码,都在全局作用。...} system.out.print(num); // 报错 但是,在 JS 中没有块级作用(ES6之前)。

70210

你所知道的JS变量作用

在ES6之前,变量作用主要分为全局作用、局部作用(也称函数作用)两种;在ES6及其之后,变量作用主要分为全局作用、局部作用、块级作用这3种。...变量作用跟声明方式有密切的关系。使用var声明的变量作用有全局作用和局部作用,没有块级作用;使用letconst声明的变量有全局作用、局部作用块级作用。...注:严格意义的全局变量都属于Window对象的属性,但letconst声明的变量并不属于Windows对象,所以它们并不是严格意义上的全局变量,在此仅仅从它们的作用这个角度来说它们是全局变量的。...由于var支持变量提升,所以var变量的全局作用是对整个页面的脚本代码有效;而letconst不支持变量提升,所以letconst变量的全局作用指的是从声明语句开始到整个页面的脚本代码结束之间的整个区域...需要注意的是,如果局部变量全局变量同名,则在函数作用域中,局部变量会覆盖全局变量,即在函数体中起作用的是局部变量;在函数体外,全局变量作用,局部变量无效,此时引用局部变量将出现语法错误。

54620

四、变量作用内存问题

执行环境就是作用。...执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为。 当代码在一个环境中执行时,会创建变量对象的一个作用链。 作用链的作用:保证对执行环境有权访问的所有变量函数的有序访问。...(1)延长作用链 try-catch的catch:会创建一个新的变量对象; with:会将指定的对象添加到作用链中。 (2)没有块级作用 JavaScript没有块级作用。...所有变量(包括基本类型引用类型)都存在于一个执行环境(也称为作用)当中,这个执行环境决定了变量的生命周期,以及哪一部分代码可以访问其中的变量。...以下是关于执行环境的几点总结: 1、执行环境有全局执行环境(也称为全局环境)函数执行环境之分。 2、每次进入一个新执行环境,都会创建一个用于搜索变量函数的作用链。

53510

js程序设计02——变量作用问题

,所以这里对num2重新赋值后num1并没有改变; 引用类型进行复制时,变的是将新值的引用指向原有的值,这样一来,新值旧值便指向了同一内存区域,两个变量实际上将引用同一个对象,因此这里对obj2的操作会影响到...关于函数环境及作用问题: 先看一个例子: function buildUri(){ var qs = "?...debug=true" 首先js没有块级作用概念,使用with语句后,在其内部定义的url变量便成了外部函数作用内的变量,内部的href会在location作用域中查找,即location.href...的区别在于:两个方法第一个参数均是指定this作用,不同的是参数部分:apply可以使用arguments或者参数数组形式,call使用的是挨个罗列的方式。...使用call or apply来改变函数作用: var color = "red"; var o = {"color":"blue"}; function sayColor(){ console.log

94000

JS学习系列 03 - 函数作用作用

在 ES5 及之前版本,JavaScript 只拥有函数作用,没有块作用(with try...catch 除外)。在 ES6 中,JS 引入了块作用,{ } 内是单独的一个作用。...采用 let 或者 const 声明的变量会挟持所在块的作用,也就是说,这声明关键字会将变量绑定到所在的任意作用域中(通常是 {...} 内部)。 今天,我们就来深入研究一下函数作用作用。...总结来说,作用可以起到两个作用: 私有化变量或函数 规避同名冲突 1.2 函数声明函数表达式 如果 function 是声明中的第一个词,那么就是一个函数声明,否则就是一个函数表达式。...块作用 ES5 及以前 JavaScript 中具有块作用的只有 with try...catch 语句,在 ES6 及以后的版本添加了具有块作用变量标识符 let const 。...总结 函数是 JavaScript 中最常见的作用单元。块作用指的是变量函数不仅可以属于所处的函数作用,也可以属于某个代码块。

1.6K10

javascript 变量作用内存问题

执行环境也就是作用在很多的编程语言中都是一个很重要的概念,规定了变量或者函数有权访问其他数据的权限,规定了各自的行为。...当代码在一个环境中执行时,会创建变量对象的一个作用链,作用链的用途是保证执行环境有权访问的所有变量函数的有序访问。 函数体内还包含着函数,只有这个函数才可以访问内一层的函数。...而内部函数的变量可以通过作用链访问外部函数的变量,可以向上搜索作用链,以查询变量。但是不能反过来。 没有块级作用 块级作用表示诸如if等有花括号封闭的代码段块,所以支持条件判断来定义变量。...一般确定某一个变量的时候是通过搜索来确定的,现在本级作用上找,如果没有,在向上级作用找,依次类推,故访问局部变量要比访问全局变量的效率更高。...因为不需要向上收索作用链 3、内存相关  js中也存在垃圾回收机制,我们不需要担心内存的泄露问题,垃圾回收机制会自动的管理内存的分配无用内存的回收。

99880

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券