在JavaScript中,如果我有一个变量会发生什么,比如:
var exampleObject = {one:'foo',two:'bar'};
然后我删除一个不存在的属性,比如:
delete exampleObject.seven;
是否有一个标准的操作过程,在任何地方都发生(什么都没有,错误消息,脚本崩溃等),或者这取决于某种实现(浏览器引擎等)?
fhity93d1#
什么都没发生。假设x = {},Type(x.y) * 不是 * 引用规范类型(不可能存在对不存在的属性的“引用”)。根据11.4.1删除操作符,这满足规则:1.令ref为计算UnaryExpression的结果。1.* 如果Type(ref)不是Reference,则返回true。*1....这种行为(“无操作”)已经存在很长时间了-任何行为不同的环境都是不兼容的。从3rd Edition ECMAScript Specification:当使用属性名P调用O的Delete方法时,执行以下步骤:1.* 如果O没有名为P的属性,则返回true。*1.......
x = {}
Type(x.y)
moiiocjp2#
如果exampleObject是一个对象,则delete的返回值为true,即使该属性不存在。
2条答案
按热度按时间fhity93d1#
什么都没发生。
假设
x = {}
,Type(x.y)
* 不是 * 引用规范类型(不可能存在对不存在的属性的“引用”)。根据11.4.1删除操作符,这满足规则:1.令ref为计算UnaryExpression的结果。
1.* 如果Type(ref)不是Reference,则返回true。*
1....
这种行为(“无操作”)已经存在很长时间了-任何行为不同的环境都是不兼容的。从3rd Edition ECMAScript Specification:
当使用属性名P调用O的Delete方法时,执行以下步骤:
1.* 如果O没有名为P的属性,则返回true。*
1.......
moiiocjp2#
如果exampleObject是一个对象,则delete的返回值为true,即使该属性不存在。