我從未見過一件有趣的事情發佈在另一個問題上。他們有這樣的事情:JavaScript將「+ + i」解釋爲什麼?
var i = + +1;
他們認爲多餘的+
它轉換爲字符串,但他們只是增加了一個字符串,是什麼原因造成的轉換。
但是,這引出了一個問題:這裏發生了什麼?
我實際上預計會出現編譯器錯誤,但JavaScript(至少在Chrome中)對它來說很好......它基本上什麼都不做。
我創建了一個小的jsfiddle證明:Demo
var i = 5;
var j = + +i;
document.body.innerHTML = i === j ? 'Same' : 'Different';
任何人都知道什麼是實際發生的,什麼JavaScript是在這個過程中做什麼?
我想,也許它會像對待++i
,但i
不增加,你甚至可以用一個值(例如,+ +5
),你不能做呢++
(例如,++5
是參考錯誤)。
間距也不會影響它(例如,+ + 1
和+ +1
是相同的)。
我最好的猜測是它把它們當作正面/負面的標誌並把它們放在一起。它看起來像1 == - -1
和-1 == + -1
,但這很奇怪。
這僅僅是一個古怪的行爲,還是它被記錄在標準的某個地方?
在我看來像'+'經營者把左操作數爲可選。如果沒有左操作數,它只返回右操作數。 – Amy
帶有空格的'+'或'-'運算符只是簡單的'+/-'運算符。你可以做'+ + + 3',它會給你'3'。沒有什麼奇怪的 – galchen
http://pythontutor.com/javascript.html#mode=edit –