我目前正在为 ES6 草案实现一些 shims。我想知道是否有人可以告诉我是什么ReturnIfAbrupt
意思。例如,我的实现Number.toInt
(调用 internal[[ToInteger]]
如下:
if (!('toInt' in Number))
Object.defineProperty(Number, 'toInt', {
value: function toInt(value) {
// ECMA-262 Ed. 6, 9-27-12. 9.1.4
// 1. Let number be the result of calling ToNumber on the input argument.
var number = Number(value);
// 2. ReturnIfAbrupt(number).
// ?
// 3. If number is NaN, return +0.
if (number != number) return 0;
// 4. If number is +0, -0, +Infinity, or -Infinity, return number.
if (number == 0 || 1 / number == 0) return number;
// 5. Return the result of computing sign(number) * floor(abs(number)).
return (n < 0 ? -1 : 1) * Math.floor(Math.abs(number));
},
writable: true,
configurable: true
});
步骤 2 是ReturnIfAbrupt(number)
。你会注意到我目前有// ?
这一步,因为我不知道该怎么做。它说的时候是什么意思ReturnIfAbrupt(...)
?
我已经阅读了ReturnIfAbrupt
草稿中的部分,但是我无法理解第 2 步要做// ?
什么,在上面的代码中要替换什么。
从我的阅读来看,可能什么都不应该做,这ReturnIfAbrupt
一步只是意味着让 ToNumber 中发生的任何错误向上传播,退出函数。但是,这似乎过于冗长,因为我认为这是不言而喻的。此外,在我看来,它ToNumber
甚至不会引发错误。有人可以确认或帮助我理解真正的含义吗?