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 利用浮點進行運算,稱為浮點...