我正在阅读ECMAScript 5.1规范。它说:
该
slice
方法有两个参数,开始和结束[...]。如果start为负,则将其视为length + start,其中length是数组的长度。如果end为负,则将其视为length + end,其中length是数组的长度。
“负”是什么意思?就像在数学中一样,
num > 0
,num
则为正num < 0
,num
则为负。但是,我们+0
并-0
?在数学中只有一个0
,既不是正数也不是负数。我的猜测是,在ECMAScript中,
+0
(又称正零)为正。-0
(又称负零)为负。但是我尝试将-0
with与一起使用slice
,并且浏览器将其视为非负数。
然后,都是+0
和-0
非正非负,尽管他们的名字?
数字的正负在哪里定义?我没有在ECMAScript规范中定义它。该定义是否继承自IEEE 754?
实际上,ECMAScript规范中定义了术语“正数”和“负数”:
数字类型正好具有18437736874454810627(即2 64 −2 53 +3)值[...]
IEEE标准的9007199254740990(即2 53 -2)不同的“非数字”值在ECMAScript中表示为单个特殊的NaN值[...]
还有另外两个特殊值,分别称为正无穷大和负无穷大[...]
其他的18437736874454810624(即2 64 -2 53)值称为有限数。其中一半是正数,一半是负数; 对于每个有限的正数,都有一个对应的负值,其大小相同。
所以,
+0
和-0
是两个有限数,因此每个必须为正或负。+0
是正数,也可以-0
是负数,或者相反。+0
正数和-0
负数。但是,根据以下内容,+0
也不-0
为负:
数学函数ABS(x)的产生的绝对值X,这是-x,如果X是负的(小于零)和否则是X本身。
实际上,在大多数情况下,规范似乎将变量为正或负与零的情况区分开。例如,
数学函数符号(x)的产生1如果X是正和-1,如果X是负。符号功能不在本标准的情况下使用时,X是零。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句