2016-07-11 24 views
0

我正在學習JavaScript,現在在操作員章節中。我想知道爲什麼++true在JavaScript中是無效的表達式,+true就好。我猜這些區別是因爲運行在JavaScript中的++(或--)操作符。只是想知道當應用++會發生什麼。爲什麼++或 - 不能直接應用於JavaScript中的文字?

console.log(+true); // 1, fine 
console.log(++true); // SyntaxError 

爲什麼true沒有隱式轉換爲數字,並遞增,因爲它是在+的情況。

當值存儲在變量中時,++執行預期的作業,但我們不能直接在文字上使用它。

+0

看看「左手邊」和「右手邊」的表情;可能會有一些亮點。長話短說,代碼'1 = 1 + 1'做什麼是合理的事情? – CollinD

+2

'true'不是變量,'+'是[一元加號](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators#Unary_plus) –

回答

4

++將1加到變量的值中,並且將該增加的值賦值給變量。當參數不是變量時,這是沒有意義的。您無法更改true的值。 ++true相當於true = true + 1

您不能在上使用++任何文字,例如, console.log(++3)也是一個錯誤,因爲它相當於console.log(3 = 3 + 1)

注意++一個布爾值轉換爲整數,如果有必要,但它必須是在一個變量:

x = true; 
 
console.log(++x);

+0

曾經我想過如果我可以做++ 1左右,這真的沒有意義。但後來我認爲除了隱式類型轉換之外,+1(或類似表達式)也沒用。 –

+0

'+'將其參數轉換爲數字。如果它已經是一個數字,它不會做任何事情,但它對於一致性很有用。就像'x.toString()'將正常工作,如果'x'已經是一個字符串。 – Barmar

4

因爲當您使用++--時,它會更改您正在操作的變量的值。

var a = 1; 
 
console.log(++a); 
 
console.log(a); 
 
console.log(--a); 
 
console.log(a);

這樣做++true你暗示,你是改變true值這將是一個非常糟糕的事情。

由於true是一個非可變值,所以不能在其上使用變異操作符。

2

++--前後減量運算符隱式修改操作數變量或屬性。操作數必須是可以出現在賦值運算符的左側,否則使用++--是沒有意義的。

對於C,C++,Java也是如此,我想象大多數(如果不是所有)包含這些運算符的C遺產編程語言。

0

++--運營商改變的值。 在你的情況下,你正試圖增加值boolean或非可變值,這是不可能的,你在做什麼。

var x = 10; 
console.log(++x) // Output 11 
console.log(x++) // Output 12 
//Or 
var y = true; 
console.log(y++) //Output 2 

在第二場景中輸出爲二因爲true等於1false等於0

相關問題