var sum = function(a, b) {return a + b;};
var add = sum;
delete sum;
执行删除后,在控制台中返回False。理想情况下它应该返回True。 为什么不删除 sum 功能?
请注意,上面的代码是在Google Chrome浏览器控制台中执行的。
答案 0 :(得分:1)
delete无法使用直接成员删除。
删除操作符从对象中删除属性。
由于您提供了sum
而没有告诉您要从哪个对象中删除它。
你要找的是
delete window.sum
现在它从sum
对象中移除了window
:)
答案 1 :(得分:1)
来自MDN:
delete运算符从对象中删除给定属性。
如果您要删除的属性不存在,则删除将不起作用并返回true。
如果对象的原型链上存在具有相同名称的属性,则删除后,对象将使用原型链中的属性(换句话说,删除仅对自身属性有影响)
使用var声明的任何属性都不能从全局范围或函数范围中删除。
因此,delete不能删除全局范围内的任何函数(无论这是函数定义还是函数表达式的一部分)。
可以删除作为对象一部分的功能(除了全局范围)。
因此sum
是一个附加到全局范围的函数,不能用delete删除。
答案 2 :(得分:0)
参考MDN