JavaScript 中局部变量的内存释放

2024-06-23

我有一个 JS 函数,每隔几秒就会在页面上调用一次。这是一个 AJAX 更新的事情。

作为一个函数,我声明局部变量。由于各种原因,我不想使用闭包或全局变量。

我从来没有考虑过这一点,但是我是否需要在函数末尾释放/清除变量来释放内存,还是 JS 会自动为我执行此操作?


一般来说,不会。声明的变量var是本地的,当您返回时会被垃圾收集。如果您省略var那么变量是全局的,并且使用delete在某些情况下,关键字对于全局变量可能很有用,但通常最好使用以下方式声明所有变量var无论如何,为了不污染window命名空间。

delete通过使用基于原型的继承时非常有用,例如:

function myclass() {
    this.variable = 'myvalue'
    ...
    delete this.variable // finished with this variable
}
var inst = new myclass()

请记住,如果inst被删除或超出范围(垃圾收集),其中的所有属性也将被删除。delete对于从哈希表中删除项目也很有用:

var d = {}
d['blah'] = 'myvalue'
...
delete d['blah']

some浏览器特定的垃圾收集错误。例如,IE 有时会在清理 DOM 元素和闭包等属性中出现问题,尽管我相信其中许多问题在 IE8 中已经减少。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 中局部变量的内存释放 的相关文章

  • JavaScript 中的负数到二进制字符串

    任何人都知道为什么javascriptNumber toString https developer mozilla org en US docs JavaScript Reference Global Objects Number toS
  • 如何使用 html 标签包装 window.getSelection().getRangeAt(0) 中的文本选择?

    如何从 window getSelection getRangeAt 0 中进行选择并用 HTML 标签 例如 span 或 mark 包围它 我更喜欢直接的 javascript 或 jQuery 解决方案 我可以使用警报输出选定的文本
  • 以编程方式获取 iOS 应用程序中的内存使用情况实时/脏字节(不是驻留/真实字节)

    根据我到目前为止所读到的内容 实际 驻留字节表示分配给应用程序的字节数 包括应用程序不再使用但尚未被操作系统回收的字节数 活动 脏字节是应用程序实际使用且操作系统无法回收的字节 我认为 XCode 调试导航器中显示的数字是 Live Byt
  • 获取访客的 Optimizely A/B 测试和变化

    当我在网站上运行实验时 我希望能够找出当前访问者看到的测试和变体 我无法找到如何做到这一点优化Javascript API https www optimizely com docs api 您可以获得第一个正在运行的实验的 ID 假设您有
  • $(document).ready 回调何时执行?

    假设我们附加一个 click http api jquery com click 锚点的处理程序 a 中的标签 document ready http api jquery com ready 打回来 该处理程序将取消默认操作 遵循href
  • Bootstrap 页脚不在底部

    我试图强制我的页脚位于网站底部 我不希望它在滚动时粘住 只是在向下滚动网页时出现在底部 目前 网页显示时页脚位于内容下方 我添加了这样的代码bottom 0 并发现它粘住了并且不适合我的网站 我还添加了这样的代码html body heig
  • 将新数据添加到 d3 Streamgraph 时的转换

    我使用d3绘制了一个与官方示例非常相似的流图http bl ocks org mbostock 4060954 http bl ocks org mbostock 4060954 唯一的区别是我如何用新数据更新它 我不仅想要垂直 y 值 过
  • 禁用拉斐尔论文上的浏览器上下文菜单

    我有一篇拉斐尔论文定义为R1 Raphael 0 0 800 600 我想在本文中禁用上下文菜单 以便我可以捕获鼠标右键单击事件 我没有这样的Raphael someDiv 800 600 禁用 div 的 oncontextmenu 属性
  • 在 Javascript 中隐藏按钮

    在我最新的程序中 有一个按钮 单击时会显示一些输入弹出框 这些框消失后 如何隐藏按钮 You can set its visibility财产 http www w3schools com cssref pr class visibilit
  • 如何在 Chrome 中将 Set 转换为数组?

    如何将集合转换为数组 https stackoverflow com questions 20069828 how to convert set to array给出了将 Set 转换为 Array 的三个答案 目前在 Chrome 浏览器
  • `forEach` 函数中的 `return` 关键字是什么意思? [复制]

    这个问题在这里已经有答案了 button click function 1 2 3 4 5 forEach function n if n 3 it should break out here and doesn t alert anyth
  • 为什么 jQuery 对损坏标记的解释与浏览器不同?

    我之前已经回答过这个问题 https stackoverflow com a 19101905 1253312 但我并不完全理解why答案是正确的 答案的要点 p p function jqrender html a href http w
  • 发送带有图像的嵌套 JSON

    我一直在尝试研究一种能够通过 Ajax 将嵌套 JSON 请求发送回服务器的方法 根据我的理解 我们主要用于向服务器发送图像或文件的 formdata 在这种情况下不起作用 因为 FormData 似乎不处理嵌套对象 这就是我需要发送的有效
  • 如何在传单地图上显示热图

    我想在我的传单地图上显示热图 我使用了 heatmap jshttps github com pa7 heatmap js https github com pa7 heatmap js但它最终只是显示 未捕获的类型错误 无法分配给只读属性
  • 脚本不会从nodejs应用程序中的ejs文件运行

    我正在尝试使用nodejs express mysql和ejs让网页显示图表 但我显然不明白ejs javascript等是如何工作的 我需要运行一个脚本来设置图表 来自 Chart js 模块 但它不会输出任何类型的图表 我尝试过的 将
  • 过滤数据表中的行

    我目前的 JQuery 插件 DataTables 工作正常 并且我在页面顶部插入了一个按钮来进一步过滤列表 我还使用了 DataTables 内置的搜索栏 我希望按钮向下过滤表格 并只显示包含特定值的行 下面是我一直在做的事情 但似乎没有
  • 汇总异常以保留模块

    我使用一个名为的汇总插件rollup plugin lit css转变 css文件转换成 javascript 模块 该插件非常简单 它本质上只是附加export default到文件 我的汇总配置使用preserveModules and
  • HTML 画布从 getImageData 返回“偏离一些”字节

    我找到getImageDataHTML 画布似乎返回不正确的字节值 我使用以下 Python 代码生成了 1x1 px 图像 from PIL import Image import numpy as np a np array 12 18
  • execCommand 的替代品

    我希望创建一个所见即所得编辑器 使用 jQuery 作为框架 我可以使用不同的方法来简化生产 我现在确实有一个正在工作的编辑 而且运作良好 我使用 iFrame 并将其设计模式设置为打开并从那里开始 然而 有一些事情困扰着我 以更改所选文本
  • Promise链基本问题

    我正在尝试理解 Promise 我创建了一些有效的承诺链 而另一些则无效 我已经取得了进步 但显然缺乏基本概念 例如 以下承诺链不起作用 这是一个愚蠢的例子 但说明了问题 我正在尝试在链中使用 Node 的函数 randomBytes 两次

随机推荐

  • 用字典中的值替换列表中的单词

    我正在尝试创建一个简单的程序 让您输入一个句子 然后将其分割成单个单词 另存为splitline 例如 the man lives in a house 每个单词将与一个字典进行匹配 该字典包含针对以下值存储的多个单词 mydict the
  • 当页面更改时,如何刷新/重新加载 Polymer 元素?

    我创建了一些自定义元素 当他们准备好时 由ready 他们开始从 API 下载 JSON 数据 并显示给用户 想要在单页应用程序中使用它们 并在数据可见时下载数据 现在 它首先下载所有页面的所有数据 因为我使用了ready event 是否
  • JavaScript 上的 String.ToCharArray() 等效吗?

    我正在尝试找到一种在 JavaScript 上为每个字符分割字符串的方法 相当于String ToCharArray from c 稍后用逗号将它们连接起来 ex 012345 分割后 gt 0 1 2 3 4 5 加入后 gt 0 1 2
  • Android ListView 中的 JSONArray

    urlHi 我有这段代码 可以从 php 页面接收数据 我想将该数据放入列表视图中 我收到该数据 并且通过 system out println 看到了该数据 但列表视图中有白行 代码 public class Utenti extends
  • 设计路由错误

    设置设备时我似乎无法克服此错误 Routing Error wrong constant name Devise registrationsController or Routing Error wrong constant name De
  • 在 Python 中将一个 SFTP 文件夹中的所有文件归档到另一个文件夹

    我能够使用 Martin Prikryl 给出的以下语法成功地将文件从 S3 上传到 SFTP 位置使用 Boto 3 将文件从 AWS S3 传输到 SFTP https stackoverflow com questions 58719
  • 在jquery中用html内容创建一个变量

    您好 我正在尝试在 jquery 中创建一个变量 其中包含一个用于在网站的不同区域中输出的表 但这给了我一个错误 我不明白为什么 这是我的 JQUERY var copy table width 750 border 0 cellspaci
  • 如何使用 Gradle 交叉编译到 Scala.JS

    在 SBT 中添加 Scala JS 依赖项时 您可以使用 E g libraryDependencies be doeraene scalajs jquery 0 9 0 这是如何在 Gradle Scala 插件中完成的 scala 版
  • 在 postgres 上将表导出为 csv

    如何将表导出到 csv在 Postgres 中 当我不是超级用户并且无法使用copy命令 我仍然可以使用右键单击 导入 按钮将数据导入到 postgres 但没有导出选项 使用 psql 并将流重定向到文件 psql U
  • ASP.NET MVC (Razor) 与 Angular 5

    我们目前正在考虑从 ASP NET MVC 迁移到 Angular 5 主要是因为它看起来是最好 最新的框架 然而 我们似乎都无法找出为什么 Angular 比 MVC Razor 更好的硬道理 SPA 与 MPA 似乎是不同的方法 但实际
  • ES 无法在 Win x64 Java SE 8 u 171/2 上启动

    我有 Win 10 x64 我更新到 Java 8 Update 171 尝试使用此命令行运行 ES cd bin elasticsearch bat Ecluster name ABTest Cluster 00 Enode name A
  • Plotly:如何在我的桑基图列上写文本?

    我已经建立了一个使用plotly 绘制桑基图 https plotly com python sankey diagram 我想为每个列命名 并赋予每个列标题 如下面的红色文本 我该如何写这些栏目标题 您可以使用注释来添加文本 使用 x 值
  • myVector.erase(myPtr) 是否删除 myPtr 指向的对象?

    如果我有以下代码 Foo f new Foo vector
  • 如何实现本机 otp 检索器并为应用程序生成哈希密钥

    React Native 初学者 我正在尝试验证OTP自动使用react native sms retriever我在项目中实现了以下示例 实施示例 https www npmjs com package react native sms
  • 惰性 Highcharts 钻取

    这个 JSFiddle 演示 http jsfiddle net gh get jquery 1 7 2 highslide software highcharts com tree master samples highcharts dr
  • Android 模拟器无法启动

    经过两周多的尝试后 我正在努力让模拟器成功启动 我确实可以使用一些帮助来解决该问题或解决相同问题的技巧 我已经能够使用非常相似的配置在我的家用计算机上成功启动模拟器 当我从工作电脑连接时失败 我相信有一些配置可能会阻止此操作 但我不知道该配
  • 如何以马赛克风格对齐图像? html/css

    我想包含一组马赛克风格的图像 它们全部通过 HTML5 CSS 组合在一起 我还使用 Bootstrap 和各种行 列和 div 来构建和定位内容 但是我无法将图像分组在一起 我已经能够将它们对齐到一定程度 但它们仍然不匹配等 请参阅附图了
  • 在 Mathematica 中,ListPlot 使用什么插值函数?

    以下截图 我使用 ListPlot 通过一些数据点绘制一条平滑的线 但我希望能够处理绘图的一阶和二阶导数 所以我想我应该使用插值创建一个实际的 函数 但正如你在图片中看到的那样 它并不顺利 当我做 Plot Interpolation 时
  • 使用缓冲区从未知大小的文件中读取

    我正在尝试从文件中读取块 但遇到问题 char inputBuffer new char blockSize while inputFile read inputBuffer blockSize int i inputFile gcount
  • JavaScript 中局部变量的内存释放

    我有一个 JS 函数 每隔几秒就会在页面上调用一次 这是一个 AJAX 更新的事情 作为一个函数 我声明局部变量 由于各种原因 我不想使用闭包或全局变量 我从来没有考虑过这一点 但是我是否需要在函数末尾释放 清除变量来释放内存 还是 JS