我想知道一旦加载了javascript块/功能总是可用的。因为我测试了一些东西,现在我有点困惑。我将一个脚本块定义为div。脚本块有一个事件处理函数,用于使用ajax重新加载div的元素。 ajax调用返回div的简单html并将其替换为当前的。但这意味着要替换执行执行的脚本。我已经认为在替换语句之后脚本会被删除。但事实并非如此。替换语句执行后的代码行所以这些东西是如何工作的。你如何描述脚本块的生命周期?
答案 0 :(得分:8)
当评估script
元素中包含的代码时,该代码评估的结果将成为页面运行时环境的一部分。删除script
元素不会从环境中删除生成的结构(函数等)。
因此,如果脚本定义了函数,或者将事件处理程序挂钩到元素,或者在现有对象(包括全局对象)上创建新属性,那么这些函数,处理程序和属性仍保留在内存中,即使script
定义它们是从DOM中删除的(受通常的JavaScript垃圾收集限制;例如,任何地方未引用的对象都符合GC的条件,但script
元素与此无关)。 script
元素仅仅是将代码传递给浏览器的机制。