删除操作员混淆

时间:2015-02-04 04:57:43

标签: javascript

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

a.outerHTML =''; delete a

a =你的元素。

我的问题..这对我来说非常混乱,因为它只有在我使用outerHTML =''时才有效。但是,删除操作符在这里说https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete它只用于从对象中删除属性?所以,(这可能是一个愚蠢的问题),但是当设置a.outerHTML时会将其转换为可删除的对象吗?怎么样?

编辑:我几乎觉得我应该删除这个问题,因为它可能听起来很愚蠢,但我显然丢了:P

1 个答案:

答案 0 :(得分:1)

delete运算符用于删除对象的属性。

var obj = {x: true};
console.log(obj)    // {x: true}
delete obj.x;
console.log(obj);   // {}

我强烈推荐这个参考:Understanding delete


在你的例子中:

a.outerHTML =''; 
delete a;

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


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

delete a;

将抛出一个SyntaxError。这就是行为的无意识。