私は現在、ES6ドラフト用にいくつかのシムを実装しています。誰かが私に何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(...)
ですか?
ドラフトのセクションを読みましたが、上記のコードの代わりに、ステップ2で何をすべきReturnIfAbrupt
か理解できません。// ?
私の読書から、それは何もすべきではないかもしれません、そしてReturnIfAbrupt
ステップは単にToNumberで発生したエラーを伝播させて関数を終了させることを意味します。ただし、言うまでもなく、それは非常に冗長に思えます。ToNumber
また、エラーをスローすることさえできるようには思えません。誰かが私に本当の意味を確認または理解するのを手伝ってもらえますか?