Javascript 删除操作员混淆

Javascript 删除操作员混淆,javascript,Javascript,因此,我发现这种技术是所有浏览器中全局.remove()方法的一种变通方法 a.outerHTML='';删除一个 a=您的元素 我的问题。。这让我非常困惑,因为它只在我使用outerHTML='';时起作用;。但是,delete操作符在这里说它只用于从对象中删除属性?所以,(这可能是一个愚蠢的问题),但当设置a.outerHTML时,会将其转换为可删除对象吗?怎么做 编辑:我几乎觉得我应该删除这个问题,因为它听起来可能很愚蠢,但我显然迷路了:delete操作符用于从对象中删除属性 var ob

因此,我发现这种技术是所有浏览器中全局.remove()方法的一种变通方法

a.outerHTML='';删除一个

a=您的元素

我的问题。。这让我非常困惑,因为它只在我使用outerHTML='';时起作用;。但是,delete操作符在这里说它只用于从对象中删除属性?所以,(这可能是一个愚蠢的问题),但当设置a.outerHTML时,会将其转换为可删除对象吗?怎么做


编辑:我几乎觉得我应该删除这个问题,因为它听起来可能很愚蠢,但我显然迷路了:
delete
操作符用于从对象中删除属性

var obj = {x: true};
console.log(obj)    // {x: true}
delete obj.x;
console.log(obj);   // {}
我强烈推荐以下参考:


在您的示例中:

a.outerHTML =''; 
delete a;

delete
运算符与
a.outerHTML=''的效果无关
这一行代码将自己用一些新的HTML替换DOM的部分。删除
delete a
,第一行代码仍然会对您看到的DOM产生影响


事实上,在ES5严格模式下:

delete a;

将抛出一个语法错误。这就是这种行为是多么的出乎意料。

是的,但它对元素有效(如果您使用outerHTML=''),这让我很困惑,因为它们在技术上不在对象中,对吗?例如,如果我只是在没有设置outerHTML=''的情况下删除了,它将不会删除。为什么呢?outerHTML对它做了什么使它如此特别?当您执行
a.outerHTML=“”)时,是否会将其临时转换为属性,然后转换为对象(这就是为什么delete可以工作的原因?)
,其效果与
delete
运算符完全无关。这就是改变一个HTML块,它必然会改变DOM中的元素。这类似于
x.innerHTML=“foo”
将删除
x
的当前子对象,并在其位置创建新的DOM对象。所有这些都与
delete
操作符无关。@NiCkNewman:所有操作都来自
outerHTML
getter/setter,而不是
delete
关键字。哇哦。是的,我刚刚删除了一个delete,我的脚本也在做同样的事情。哈哈。我知道我有一种奇怪的感觉,为什么这个删除操作符在这里。(我也会在@jfriend00查看该页面)谢谢!分配
innerHTML
属性完全不会改变任何内容:。