Joy*_*Lee 5 javascript ecma262 ecmascript-6
最近,我阅读了ECMAScript语言规范.我没有打算阅读整个规范,我只是选了一些部分.我遇到了许多问题,其中一个是这样的:
1.Let len be ToInteger(argument).
2.ReturnIfAbrupt(len).
3.If len ? +0, then return +0.
4.Return min(len, 2^53-1).
Run Code Online (Sandbox Code Playgroud)
据我了解,它应该是这样的:
var len = ToInteger(argument); // step 1
len = ReturnIfAbrupt(len);// step 2
// step 3
if(len<=0){
return +0; //-0 is OK too?
}
return Math.min(len, Math.pow(2,53)-1); // step 4
Run Code Online (Sandbox Code Playgroud)
我不明白ReturnIfAbrupt(len)的含义是什么,我发现了这个:
1.如果论证是一个突然完成,那么回归论证.
2.如果参数是完成记录,则让参数为参数.[[value]].
什么是突然完成,以及它与完成记录之间的区别?它们可以结合一步:如果参数是完成记录,那么返回参数.任何建议都会感激不尽!
我的理解是,在 ES 6 中,当对表达式求值时,它会返回一个完成记录(这是用于解释行为的规范设备),其中保存有关表达式求值结果的信息。
在上面的情况下,如果参数是突然完成记录(即其类型不是normal),则返回它。
如果参数不是突然完成记录,则返回其值。
这本质上意味着如果参数到整数的转换成功,则返回该值。否则,传播错误值。
| 归档时间: |
|
| 查看次数: |
425 次 |
| 最近记录: |