2014-02-19 26 views
1

在打字稿,我有以下幾點:在迴歸聲明中連續兩個負號表示什麼?

self.newId = 0; 

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

我的猜測是,return --self.newId;做兩件事情:

  1. 它返回的self.newId
  2. 當前值,那麼它通過減少的self.newId值1.(-1)

我假定下一次GetNewId被調用時,它會返回-1,然後將值降低到-2

任何人都可以證實

回答

7

你的答案/思考的代碼是接近,但並不完全正確。有關更多詳細信息,請參閱此mozilla documentation on arithmetic operations

return --self.newID 

使用前綴遞減運算符。

因此它在之前減去而不是在返回之後返回值。

第一次調用GetNewId()將返回-1而不是0.它將從那裏遞減。

9

號你所描述的是減量後運營商,這是這樣寫的:

foo-- 

它的確會,第一計算表達式和然後遞減值。

這是預減運營商,這是這樣寫的:

--foo 

它將第一遞減,然後評估。

那麼,究竟該片段將做的是

  1. 它減少由1的的self.newId值。 (要-1
  2. 它然後返回的self.newId

的電流值作爲一個記憶,你可以想想閱讀表達左到右:做運營商來第一個或最後?

+0

這就是爲什麼我從不在return語句或賦值操作符的同一行放置遞減運算符的原因。 –

+0

這就是爲什麼我從來沒有首先使用具有這種固有必要的副作用構造的語言;-) –

+6

那麼,有辦法安全地使用這些語言。 –