Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “你做什么?”;“积极的”;及;“否定”;在ECMAScript中是什么意思+;0和-0_Javascript_Language Lawyer_Specifications - Fatal编程技术网

Javascript “你做什么?”;“积极的”;及;“否定”;在ECMAScript中是什么意思+;0和-0

Javascript “你做什么?”;“积极的”;及;“否定”;在ECMAScript中是什么意思+;0和-0,javascript,language-lawyer,specifications,Javascript,Language Lawyer,Specifications,我在看报纸。它说: slice方法接受两个参数,start和end[…]。如果start为负值,则将其视为 长度+开始,其中长度是数组的长度。如果end为负值,则将其视为长度+end,其中长度为长度 数组的一部分 “消极”是什么意思?这是有道理的,就像数学一样 如果num>0,则num为正 如果num

我在看报纸。它说:

slice
方法接受两个参数,start和end[…]。如果start为负值,则将其视为 长度+开始,其中长度是数组的长度。如果end为负值,则将其视为长度+end,其中长度为长度 数组的一部分

“消极”是什么意思?这是有道理的,就像数学一样

  • 如果
    num>0
    ,则
    num
    为正
  • 如果
    num<0
    ,则
    num
    为负值
但是
+0
-0
呢?数学中只有一个
0
,它既不是正的,也不是负的。我猜,在ECMAScript中

  • +0
    (也称为正零)为正
  • -0
    (也称为负零)为负
但我尝试将
-0
切片一起使用,浏览器将其视为非负面

那么,
+0
-0
是否都是非正面和非负面的,不管它们的名字是什么


一个数字的正性或负性在哪里定义?我没有发现ECMAScript规范中的定义。定义是否继承自IEEE 754?

您的困惑在于这一部分:

但是
+0
-0
呢?数学中只有一个
0
,它既不是正的,也不是负的。我猜,在ECMAScript中

  • +0
    (也称为正零)为正
  • -0
    (也称为负零)为负

+0
不是正数<代码>-0
不是负数。从概念上讲,它们都表示数字零,或者,当发生下溢时,表示任何大小太小而无法用有限数量的可用位表示的数字


拥有
+0
-0
的决定更多地来自IEEE而不是ECMA。

如果不区分表示数学值0的文本
+0
-0
,以及表示内存中的值
+0
-0
,事情可能会变得混乱,分别为:

  • 可以以双精度64位数据格式存储的从0到最小正实数的任何数学值
  • 从可以以双精度64位数据格式存储的最大负实数到0的任何数学值
  • 如果您有一个包含
    Number
    实例
    -0
    的变量,那么它可能表示实数0(显然没有符号),也可能表示实数10^-10000

    如果您在代码中看到文字
    -0
    +0
    ,这将被解释为实数0,它被存储为
    数字
    -0
    +0
    ,视情况而定(就像任何足够小但实际上不是0的实数)

    以下是规范中的一些相关章节,希望能澄清一些问题:

  • ECMAScript规范中确实定义了术语“正数”和“负数”:

    数字类型正好是18437736874454810627(即, 264−253+3)值[…]

    9007199254740990(即253−2) 明显的 IEEE标准的“非数字”值表示为 ECMAScript作为单个特殊NaN值[…]

    还有两个特殊值,称为正无穷大和 负无穷[…]

    其他18437736874454810624(即, 264−253)值称为有限数。 其中一半是正数,一半是负数 数字;对于每个有限的正数值,都有一个 具有相同大小的相应负值

    所以,

    • 由于
      +0
      -0
      是这两个有限数中的两个,因此每个数必须是正数或负数
    • 由于每个有限正数必须有一个负的对应项,
      +0
      为正,
      -0
      为负,或者相反
    • 如果正零是一个负数,而负零是一个正数,那就太过分了。所以我们可以(可能)假设
      +0
      为正,
      -0
      为负
    但是,根据以下内容,
    +0
    -0
    都不能为负:

    数学函数abs(x)得出x的绝对值, 那是−如果x为负(小于零)则为x,否则为 x本身

    事实上,在大多数情况下,规范似乎能够区分变量为正或负的情况与变量为零的情况。比如说,

    如果x为正,则数学函数符号(x)产生1 及−1如果 x为负。在本标准中,符号函数不用于x为零的情况


    因此,规范是矛盾的。有趣的是,
    Math.abs(-0)==-0
    是正确的(在Chrome中)。@ssube
    0==-0
    @ssube是,
    0===-0
    。不能区分它们。做在ECMAScript 6中,
    Object.is(0,-0)
    is
    false
    。相关:一个有趣的问题。我想在这种情况下,
    负值
    被视为
    “小于零”
    。但是对于
    -0*0
    (以及类似的算术运算),很明显符号确实很重要。)那么,ECMAScript数的正性或负性是否定义为其数学值的正性或负性?因此,由于
    +0
    -0
    的值都是0,它们既不是正的也不是负的?@Oriol:引用部分的正下方使用了注释“…如果x是n