2015-09-08 62 views
-5

我已經閱讀了這個話題: Explain +var and -var unary operator in javascript+單目運算符在JavaScript

,但我仍然無法理解這個簡單的代碼:

var a = 3; 
console.log(-a); // -3 
console.log(+a); // 3 
a = -a; 
console.log(a); // -3 
console.log(+a); // -3 

「一元負運算先於其操作數,否定它。」

「一元正運算符在它的操作數之前並且計算到它的操作數,但是試圖將它轉換成一個數字,如果它還沒有的話。

但我仍然無法確定爲什麼console.log(+ a)第一次返回3。

+0

'a'是一個'數字'。 –

+0

你的第三個'console.log'輸出'3'而不是'-3'。 –

+0

@ X.L.Ant你是對的我編輯我的文章。感謝您的反饋意見。 –

回答

4

但我仍然無法確定爲什麼console.log(+ a)第一次返回3。

a值是3在該點。

的前一行,-a,需要的a值,取消它並將它傳遞給console.log。它分配更改後的值返回到a

+0

感謝Quentin所以++和+在js中的行爲不一樣。因爲如果我讓var a = 0;的console.log(++ a)的// 1 console.log( - a); // 0.所以在這種情況下,在操作數之前讓操作符修改變量。換句話說,當操作符++在修改變量之前,但是當操作符+在它未修改之前? Js很棘手...... :) –

+0

'++ a'是'a = a + 1'的簡稱 – Barmar

+0

嗯,是的。不同的操作員做不同的事。 – Quentin