在打字稿中,我有以下内容:
self.newId = 0;
self.GetNewId = () => {
return --self.newId;
};
我的猜测是return --self.newId;
做了两件事:
self.newId
self.newId
的值减少1.(至-1)我假设下次调用GetNewId
时,它会返回-1
,然后将值减少到-2
等。
任何人都可以确认
答案 0 :(得分:10)
没有。您所描述的是 post-decrement 运算符,其编写如下:
foo--
确实,首先评估表达式,然后递减值。
这是 pre-decrement 运算符,其编写如下:
--foo
首先减少,然后评估。
那么,这个代码片段的作用是
self.newId
的值减少1
。 (到-1
)self.newId
作为助记符,您可以考虑从左到右阅读表达式:运算符是先到还是最后?
答案 1 :(得分:7)
你的答案/对代码的思考很接近,但并不完全正确。有关其他详细信息,请参阅此mozilla documentation on arithmetic operations。
行
return --self.newID
正在使用前缀减量运算符。
所以它在返回值之前减去,而不是在返回之后。
对GetNewId()
的第一次调用将返回-1而不是0.它将从那里开始递减。