5

我想知道一旦加载,javascript 块/函数是否始终可用。因为我已经测试了一些东西,现在我有点困惑。我在 div 中定义了一个脚本块。脚本块有一个事件处理函数,用于使用 ajax 重新加载 div。ajax 调用返回 div 的纯 html 并将其替换为当前的。但这意味着替换也执行执行的脚本。我坚持认为该脚本将在替换语句后停止执行。但它没有。执行替换语句后的代码行那么这些东西是如何工作的。你如何描述脚本块的生命周期?

4

1 回答 1

8

script评估元素中包含的代码时,该代码评估的结果将成为页面运行时环境的一部分。移除script元素不会从环境中移除生成的结构(函数等)。

因此,如果脚本定义了函数,或将事件处理程序挂钩到元素,或在现有对象(包括全局对象)上创建新属性,那么即使script定义它们的函数、处理程序和属性已从 DOM 中删除,这些函数、处理程序和属性也会保留在内存中(服从通常的 JavaScript 垃圾收集;例如,未在任何地方引用的对象都符合 GC 条件,但script元素与此无关)。script元素只是将代码传送给浏览器的一种机制。

于 2013-03-07T09:03:02.637 回答