2

假设我们有这样的代码:

function someName(callback) {
  var elem = document.createElement('input');
  elem.addEventListener('change', function(evt) {
    callback();
  }, false);
  // some code
  elem.click();
}

// some code

someName(function() {
  alert("Hello world!");
});

问题是:在移出回调上下文后,JS 会完全删除在“someName”函数中创建的“elem”元素吗?另一个问题是:如果“elem”元素在发出“click”事件后没有改变,JS会删除它吗?

你能解释一下什么时候删除“elem”元素吗?

PS:我正在尝试使用 node-webkit 编写一个简单的应用程序,并且需要这样的代码来让 node-webkit 打开一个文件对话框(打开文件、保存文件等)并处理它的结果。

4

1 回答 1

2

函数内部定义的变量只有在函数执行时才存在于函数内部。

您的代码创建了一个输入元素,并为其状态更改处理程序分配了一个回调函数,但您实际上并未将元素附加/插入到 DOM 的任何位置,因此该元素仅作为该变量存在;在函数结束后它永远不会成为 DOM 中存在的东西

因此,当函数结束时,变量将被销毁并且该元素将不再存在,包括状态更改处理程序。

旁注.createElement()不是.create()(除非您有定义.create()方法的代码..)

于 2013-11-09T14:31:28.993 回答