php - JavaScript 内存管理

标签 php jquery kendo-ui

我目前正在开发一个使用 Kendo UI、jQuery 和 Symfony 1.4 的项目,并且我有一些全局变量。

<script type="text/javascript">
  var addURL = '<?php echo url_for('dashboard/addEmployee') ?>';
  var deleteURL = '<?php echo url_for('dashboard/deleteEmployee') ?>';
  var editURL = '<?php echo url_for('dashboard/editEmplouee') ?>';
  var viewURL = '<?php echo url_for('dashboard/viewEmployees') ?>';
      ... some other URLs follow here.
</script>

我将按如下方式使用这些变量:

$.ajax({
  url: addURL,
  .. other options here
});

比方说,我有很多全局变量,也许有一百个,我是否需要担心“销毁”这些变量?因为我在某处读到过 javascript 是垃圾收集的。当我更改页面时,GC 会收集这些变量吗?

最后关于 kendo UI,我使用 Kendo UI 小部件窗口充当项目中的对话框,关闭后如何处理对话框?因为我从信息消息到错误消息都重复使用相同的对话框。如果元素的点击处理程序结束,它是否会丢失/损坏(超出范围)?

最佳答案

"... do I need to worry about 'destroying' those variables?"

我不知道您是否需要担心,但是使用 var name = expression 定义的全局变量无法通过 delete 手动删除,也不能通过垃圾回收来删除(GC)。

如果您想以可以单独删除的方式定义字符串,请将它们定义为对象的属性。如果您想了解更多有关 javascript delete 的使用,请阅读this

如果您想确保字符串可供 GC 使用,请在函数内定义它们,并确保该函数(更准确地说是由执行该函数生成的任何“执行上下文”)不是以下任一者的一部分:更多“闭包”作用域链。通过这样做,函数(和 GC)将需要做更多的工作,因此需要在内存和 CPU 负载之间进行权衡。

"Will those variable be collected by the GC when I change the page?"

与 DOM 一样,JavaScript 的整个 window 对象(全局命名空间及其中的所有内容)都会在页面更改/重新加载时被销毁。我不确定 GC 进行破坏的说法是否正确,但这是学术性的 - 它要么是 GC,要么是非常类似的东西。

关于php - JavaScript 内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14019345/

相关文章:

javascript - 有没有更干净的数据属性方法

php - 我尝试在我的 laragon 中更新 php 但我得到了这个

php - preg_split() 的正则表达式换行

php - 这是创建 ajax 上传表单的安全方法吗?

php - 两个数组的 Google 散点图

javascript - Kendo UI - 进度条 - 方向

angular - kendo-numerictextbox' 不是已知元素

jquery - 如何取消 Kendo Grid 上的编辑?

php - 队列通知 laravel 5.3 问题

php - Codeigniter 未加载 CI super 对象