- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
最近,我阅读了 ECMAScript 语言规范。我不打算阅读整个规范,只是挑选了一些部分。我遇到了很多问题,其中一个是这样的:
1.Let len be ToInteger(argument).
2.ReturnIfAbrupt(len).
3.If len ≤ +0, then return +0.
4.Return min(len, 2^53-1).
按照我的理解,应该是这样的:
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
没看懂ReturnIfAbrupt(len)是什么意思,发现了这个:
1.如果参数是abrupt completion , 然后返回参数。
2.Else 如果参数是 Completion Record ,然后让参数成为参数。[[value]]。
什么是突然完成,它和Completion Record有什么区别?它们能不能合并一个步骤:If argument is an Completion Record , 然后返回参数。任何建议将不胜感激!
最佳答案
我的理解是,在 ES 6 中,当对表达式求值时,它会返回一个完成记录(这是一种用于解释行为的规范设备),其中包含有关表达式求值结果的信息。
在上面的例子中,如果参数是一个突然完成的记录(即它的类型不是正常),那么它被返回。
如果参数不是突然完成记录,则返回它的值。
这实质上意味着如果参数到整数的转换成功,则返回该值。否则,传递一个错误值。
关于javascript - ECMA-262 ReturnIfAbrupt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20533838/
最近,我阅读了 ECMAScript 语言规范。我不打算阅读整个规范,只是挑选了一些部分。我遇到了很多问题,其中一个是这样的: ToLength 1.Let len be ToInteger(argu
我目前正在为 ES6 草案实现一些垫片。我想知道是否有人可以告诉我 ReturnIfAbrupt 是什么意思。例如,我对 Number.toInt 的实现(调用内部 [[ToInteger]] 如下:
我知道有一些关于这个的帖子,但我还没有找到一个很好的解释来解释什么是 ReturnIfAbrupt(AbstractOperation())语句的计算结果为 AbstractOperation()不是
我是一名优秀的程序员,十分优秀!