首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ECMA-262 ReturnIfAbrupt

ECMA-262 ReturnIfAbrupt
EN

Stack Overflow用户
提问于 2013-12-12 02:20:34
回答 2查看 516关注 0票数 5

最近,我阅读了ECMAScript语言规范。我不打算看整个说明书,我只是拿了一些零件。我遇到了很多问题,其中一个是这样的:

ToLength

代码语言:javascript
复制
1.Let len be ToInteger(argument).
2.ReturnIfAbrupt(len).
3.If len ≤ +0, then return +0.
4.Return min(len, 2^53-1).

据我所知,应该是这样的:

代码语言:javascript
复制
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)的含义,我发现:

ReturnIfAbrupt

1.如果参数是突然完成,则返回参数。

2.否则,如果参数是完井记录,那么就让参数成为参数。

什么是突然完成,它和完成记录之间的区别?它们可以结合一个步骤:如果参数是完井记录,那么返回argument.Any建议将是感激的!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-12 03:24:54

我的理解是,在ES 6中,当计算表达式时,它返回一个完成记录(这是解释行为的规范设备),该记录保存有关表达式结果的信息。

在上述情况下,如果参数是一个突然完成记录(即它的类型不是正常的),则返回它。

如果参数不是突然完成记录,则返回其值。

这在本质上意味着,如果参数转换为整数的转换没有问题,则返回值。否则,将生成一个错误值。

票数 1
EN

Stack Overflow用户

发布于 2013-12-12 03:21:17

根据ECMAScript规范。

“突然完成”一词是指具有[类型]值而非正常值的任何完成。

完成记录是一个“对象”,有三个数据成员:类型、值和目标。

http://people.mozilla.org/~jorendorff/es6-draft.html#sec-normalcompletion是完成记录的一个例子。

尽管如此,enoughXD还不清楚,也许您需要在阅读上进一步阅读。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20533838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档