请参阅以下代码:
2.toString(); // error
2..toString(); // "2"
2...toString(); // error
Run Code Online (Sandbox Code Playgroud)
我想知道为什么2..toString()可以运行没有错误以及运行时会发生什么?
有人可以解释一下吗?
最近,我阅读了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]].
什么是突然完成,以及它与完成记录之间的区别?它们可以结合一步:如果参数是完成记录,那么返回参数.任何建议都会感激不尽!
我无法理解下面的代码:
var reg=/|/;
reg.test('ssdws');//returns true no matter what the string parameter is.
Run Code Online (Sandbox Code Playgroud)
我知道结果,但为什么?