我必須編寫一個例程,如果其類型爲number
,則將變量值增加1,如果不是,則將0賦值給變量,其中變量最初爲null
或undefined
。爲什麼`null> = 0 && null <= 0`但不是`null == 0`?
第一個實現是v >= 0 ? v += 1 : v = 0
,因爲我認爲任何不是數字都會使算術表達式爲false,但由於null >= 0
的計算結果爲true,因此它是錯誤的。然後我學會了null
的行爲如同0,下面的表達式都被評估爲true。
null >= 0 && null <= 0
!(null < 0 || null > 0)
null + 1 === 1
1/null === Infinity
Math.pow(42, null) === 1
當然,null
不是0 null == 0
被評估爲假。這使得似乎同義反復表達式(v >= 0 && v <= 0) === (v == 0)
錯誤。
爲什麼null
就像0,雖然它實際上不是0?
他正在談的JavaScript。你的例子是在PHP中。在PHP中,運算符==以特殊方式比較值。你可以做一些非常瘋狂的比較,比如「10」==「1e1」(這是真的)。如果使用operator ===,則會得到完全不同的結果,因爲它會檢查類型是否與值相匹配。查看此鏈接:http://www.php.net/manual/en/language.operators.comparison.php – Pijusn 2012-04-06 05:59:12
PHP'=='運算符確實以「特殊」方式工作。 – 2014-03-19 03:26:01
如果您的要求是從1開始計數而不是0,那麼增加最初爲'null'或'undefined'的計數器的方法非常簡單:c = - 〜c //結果爲1 for null/undefined;如果已經有一個數字,則增加' – 2017-09-12 16:24:37