Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中用于事件处理的内存泄漏_Javascript - Fatal编程技术网

JavaScript中用于事件处理的内存泄漏

JavaScript中用于事件处理的内存泄漏,javascript,Javascript,以下功能是否存在内存泄漏 var d = document.getElementById("d"); d.onclick = function() { // blah... }; 这不是内存泄漏。它将onclick处理程序附加到DOM元素,这是很常见的。这不是内存泄漏。它将onclick处理程序附加到DOM元素,这是非常常见的 所有局部变量,即在函数(堆栈上)内声明的变量,在方法调用完成后往往会失去作用域 此外,当您使用d时,也可以将其删除删除d否 所有局部变量,即在函数(堆栈上)

以下功能是否存在内存泄漏

var d = document.getElementById("d");
d.onclick = function() {

    // blah...

};

这不是内存泄漏。它将
onclick
处理程序附加到DOM元素,这是很常见的。

这不是内存泄漏。它将
onclick
处理程序附加到DOM元素,这是非常常见的

所有局部变量,即在函数(堆栈上)内声明的变量,在方法调用完成后往往会失去作用域

此外,当您使用
d
时,也可以将其删除<代码>删除d

所有局部变量,即在函数(堆栈上)内声明的变量,在方法调用完成后往往会失去作用域


此外,当您使用
d
时,也可以将其删除<代码>删除d

不,这里没有内存泄漏

此外,如果只想在一行中执行,可以使用数组反引用-

document.getElementById("d").onclick = function() {
    // blah...
};
但是如果元素不存在(或者DOM没有准备好,等等),这是危险的,因为
document.getElementById
返回
null
,如果在DOM中找不到该对象(尽管
null
typeof
时是
对象,但尝试在其上设置属性并不酷)


啊,JavaScript的怪癖。

不,这里没有内存泄漏

<div id="parent">
<span id="child">I am a span</span>
</div>
此外,如果只想在一行中执行,可以使用数组反引用-

document.getElementById("d").onclick = function() {
    // blah...
};
但是如果元素不存在(或者DOM没有准备好,等等),这是危险的,因为
document.getElementById
返回
null
,如果在DOM中找不到该对象(尽管
null
typeof
时是
对象,但尝试在其上设置属性并不酷)

啊,JavaScript的怪癖

<div id="parent">
<span id="child">I am a span</span>
</div>
//在从dom中删除处理程序之前从dom中清除事件将导致内存丢失

现在这样做将开始泄漏内存

   document.getElementById("parent").innerHTML="";
//在从dom中删除处理程序之前从dom中清除事件将导致内存丢失

现在这样做将开始泄漏内存

   document.getElementById("parent").innerHTML="";

您正在创建变量
d
但将
click
处理程序绑定到元素
div
,这是您的实际代码吗?您正在创建变量
d
但将
click
处理程序绑定到元素
div
,这是您的实际代码吗?删除d;不起作用。删除仅适用于对象属性。然而,d=null;工程.删除d;不起作用。删除仅适用于对象属性。然而,d=null;作品