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

win*_*ker 1 javascript typescript

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

self.newId = 0;

self.GetNewId = () => {
                return --self.newId;
                };
Run Code Online (Sandbox Code Playgroud)

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

  1. 它返回当前的值 self.newId
  2. 然后它将值减self.newId1.(到-1)

我假设下次GetNewId调用时,它将返回-1然后将值减少到-2,等等.

谁能证实

Jör*_*tag 10

不.你所描述的是后递减运算符,它是这样写的:

foo--
Run Code Online (Sandbox Code Playgroud)

它确实会首先评估表达式然后递减值.

这是预递减运算符,其编写如下:

--foo
Run Code Online (Sandbox Code Playgroud)

它将首先递减,然后进行评估.

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

  1. 它减少了self.newIdby 的值1.(至-1)
  2. 然后它返回当前的值 self.newId

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

  • 好吧,有办法安全地使用这些语言. (6认同)

小智 7

你的答案/对代码的思考很接近,但不是很正确.有关其他详细信息,请参阅此有关算术运算的mozilla文档.

这条线

return --self.newID
Run Code Online (Sandbox Code Playgroud)

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

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

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