js很奇怪的問題,關於加法運算的問題?

時間 2021-06-01 11:24:02

1樓:

規則是下面這樣的,另外加上 (+'') = Number('') 這樣的強制轉換成number就能得到結果了。

至於為什麼會這樣你應該深入了解組織。

2樓:小炒黃牛肉

1、 +『2』轉成數字2,所以1+ +『2』等於3

2、 1+『 』(空格)字串 1轉字串所以等於'1

3、 1+ +''(空字串轉成數字0) 所以等於1

3樓:貘吃饃香

只是規範規定

乙個個說

1+ +'2'

注意這裡有個空格,不會成為 ++ 運算子,因為與++的parse要求不符,會分開。

所以在parse 中是類似是

[1, 運算子+,表示式[一元運算子+, 字串2]]先進行表示式求值

表示式內是個一元運算子+

它的求值是 ES http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.6

其中 expr 是字串2,執行到 2 步驟會被 ToNumber,轉為數值2後,結構變為

[1, 運算子+,2]

此時是 ES的+運算 ECMAScript Language Specification

根據 + 運算說明

執行到 8步驟 lprim (左值) rprim(右值)均 ToNumber 後相加,結果為3.

1+' '

parse

[1, 運算子+,空字串]

同根據 ES的+運算 ECMAScript Language Specification

執行到 7 判斷出 rprim 是 String,則lprim 和 rprim 均 ToString 後連線。

結果為字串 「1」.

1+ +''

parse 同第乙個

[1, 運算子+,表示式[一元運算子+, 空字串]]

先進行表示式求值

表示式內是個一元運算子+

它的求值是 ES http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.6

其中 expr 是空字串,執行到 2 步驟會被 ToNumber,轉為數值0後(見註1),結構變為

[1, 運算子+,0]執行到 8步驟 lprim (左值) rprim(右值)均 ToNumber 後相加,結果為1.

【注1】:

其中 ToNumber 對 string 的處理需要看ECMAScript Language Specification

其中有說

A StringNumericLiteral that is empty or contains only white space is converted to +0.

空字串和只包含空格的轉為 +0 (ES 的0 是帶符號的有+0 和-0)

JS中 有關運算的問題?

冴羽 原本以為是道簡單的題目,越想越複雜,嚇得我捧上了規範 根據規範的意思,var a a 其實是先執行加1操作,再執行的賦值操作,只是a 返回的是舊值。這也就是說其實a已經增加到了6,只是a沒有想到又把舊值5賦給了a,所以最終的結果就是a等於5 smallcold 此題考查運算子優先順序和表示式返...

關於python中邏輯運算的小問題

李大師 上面的回答都很好,我也沒什麼必要再回答了,因為最近回答問題比較多,hit到limit,被賬號受限了幾天,對樓主提供乙個連線,你去那跟著看,這樣扣程式,扣幾天就有點心累了。一開始學習可以快速過一遍,然後找小作業做一下,小專案寫一下,然後過程中慢慢解決這些問題。Python 基礎程式設計 嗶哩嗶...

python簡單的加法問題

黃哥 浮點數近似計算。在電腦科學中,浮點 英語 Float point,縮寫為FP 是一種對於實數的近似值數值表現法,由乙個有效數字 即尾數 加上冪數來表示,通常是乘以某個基數的整數次指數得到。以這種表示法表示的數值,稱為浮點數 floating point number 利用浮點進行運算,稱為浮點...