返回声明中两个连续的减号是什么意思?

时间:2014-02-19 18:11:07

标签: javascript typescript

在打字稿中,我有以下内容:

self.newId = 0;

self.GetNewId = () => {
                return --self.newId;
                };

我的猜测是return --self.newId;做了两件事:

  1. 它返回self.newId
  2. 的当前值
  3. 然后将self.newId的值减少1.(至-1)
  4. 我假设下次调用GetNewId时,它会返回-1,然后将值减少到-2等。

    任何人都可以确认

2 个答案:

答案 0 :(得分:10)

没有。您所描述的是 post-decrement 运算符,其编写如下:

foo--

确实,首先评估表达式,然后递减值。

这是 pre-decrement 运算符,其编写如下:

--foo

首先减少,然后评估。

那么,这个代码片段的作用是

  1. 它会将self.newId的值减少1。 (到-1
  2. 然后返回self.newId
  3. 的当前值

    作为助记符,您可以考虑从左到右阅读表达式:运算符是先到还是最后?

答案 1 :(得分:7)

你的答案/对代码的思考很接近,但并不完全正确。有关其他详细信息,请参阅此mozilla documentation on arithmetic operations

return --self.newID

正在使用前缀减量运算符。

所以它在返回值之前减去,而不是在返回之后。

GetNewId()的第一次调用将返回-1而不是0.它将从那里开始递减。