在下面的“抽象平等比较”部分中,我有点困惑:
比较x == y(其中x和y是值)产生true或false。这样的比较如下:
'!是什么意思?为! ToNumber(x)和! ToNumber(y)?
有人可以帮助我吗?谢谢!
答案 0 :(得分:3)
含义在5.2.3.4 ReturnIfAbrupt Shorthands
部分中定义类似地,前缀
!
用于表示对抽象或语法定向操作的后续调用将永远不会返回abrupt completion,并且所得到的Completion Record's[[Value]]
字段应代替操作的返回值。例如,步骤:1. Let val be ! OperationName().
等效于以下步骤:
1. Let val be OperationName(). 2. Assert: val is never an abrupt completion. 3. If val is a Completion Record, set val to val.[[Value]].
使用突然的完成记录来传播错误,因此从根本上讲,这意味着这些过程不会引发错误,并且应该“取消包装”完成记录以使用其封装的实际值。