2017-09-14 121 views
-1

的JavaScript:"1" - - "1"給我們2輸出,而如果我寫這樣"1"--"1"越來越JavaScript輸出「1」 - - 「1」是2怎麼樣?

Uncaught ReferenceError: Invalid left-hand side expression in postfix operation

的作品即"1" - - "1"

console.log("1" - - "1")

那並不是一個在一個的t工作,即"1"--"1"

console.log("1"--"1");

這對我來說完全不可思議。

+0

真的不清楚...你能否創建一個片段來重現這一點? – Weedoze

回答

8

-運算符將字符串"1"轉換爲數字。

所以,"1" - - "1"相當於:

1 - (-1) 

所以:2!

"1"--"1"會失敗,因爲運算符--只需要一個操作數。 "1"--"1"只是沒有意義。在第一種情況下,你在-之間有一個額外的空間 - 這使他們成爲兩個不同的運營商。

+2

「如果你有......這將是有效的」:不,這是無效的! – trincot

+0

@trincot更正!謝謝! – Nisarg

6

當兩個-符號連接在一起時,它們形成unary -- operator。該運算符需要一個變量才能起作用,並且由於"1"不是一個變量,因此會出現錯誤。

當兩個-分開時,那麼第一個是subtraction operator,第二個是unary negation。這是有效的語法,併產生2

0

其簡單的代數和這裏的JavaScript類型的邏輯......

所以代數部分:

的語句評估爲1-(-1)這是2

它就像你有1美元,你減去你擁有給朋友的1個金幣。這給你2美元,因爲你不必給他美元回來(這在技術上,你真的沒有再獲得美元)。

JavaScript部分:

這工作,因爲Javascript可以通過計算字符串如果他們的數字。所以Javascript可以將"1"轉換爲1

0

--- -是不一樣的。

--Postfix Decrement Operatorfoo--的意思是「取變量foo的價值,從中減去1,分配回foo。字符串文字不是一個變量,所以當你嘗試"a string"--這將導致錯誤。

-可以是Unary - Operator或。根據上下文的Subtraction Operator

"1" - - "1"的情況下,你必須每一個

第二-是一元。 - 運營商與"1"轉換成其權利-1的行吟詩人r是減法運算符。

如果你從「one」中減去「negative one」,你會得到「two」。

相關問題