2013-10-09 65 views
0

所以我不知道爲什麼的Javascript返回VAR ++

var x=5 
function foo(){ 
    return x++ 
} 
foo() 

回報5和

var x=5 
function foo(){ 
    return ++x 
} 
foo() 

回報6.

是不是因爲++操作的優先級被執行排除在返回之前 - 即。優先級是(return x)++?還是有一些棘手的事情呢?

+0

沒什麼棘手的。這只是++ x和x ++的區別。 – Thilo

+0

這裏沒什麼棘手的。你說得對。雖然使用非局部變量'x'讓我感到畏縮。 – Floris

+1

從邏輯上看:x ++在遞增之前返回x。 ++ x在返回之前遞增x。沒有什麼棘手 –

回答

6

它是前/後增量。這只是運營商的工作方式。 ++varpre增量,這意味着在返回之前該值遞增並且var++增量,其中該值在返回之後遞增。

你可以找到更多關於這些語義的細節here

+0

預先增量++ x在表達式求值之前遞增變量,後遞增遞增var在評估表達式之後纔有可能。這是真正的兩個操作發生在一個表達式中,具有不同的順序。 – ChuckCottrill