小蟲子可能會從意想不到的地方爬進來。錯誤的值可能會使您的條件邏輯以意想不到的方式失敗。讓我們快速看一下嚴重不平等帶來的令人頭痛的問題。
這些功能並不相同。它們大部分相同,但有一個非常具體的區別。你看到了嗎?
const one = (a) => a > 10; const two = (a) => !(a <= 10);
每當我們使用 undefined 或 NaN 執行不等式檢查時,結果都是 false。如果我們不明確檢查邊緣情況,兩次「等效」檢查可能會返回不同的答案。
if (!(value <= 10)) { // ...
如果您遇到該程式碼,您可能會毫不猶豫地將其變更為 if (a > 10) { 。
但是我們並不總是能得到正常值。這可能是對您的程式碼的重大更改。這可能會導致非常難以排除缺陷。這個簡單的程式碼中沒有任何內容表明我們可能會遇到“壞”值,因此您可能會完全錯過它。
類型安全也無法解決這個問題,因為 NaN 是一個數字......它只是一個壞。
如果您在程式碼中遇到這樣的奇怪情況,請問問自己,如果您更改錯誤值,會發生什麼情況。希望您的程式碼可以防止您獲得錯誤的值並執行錯誤的數學運算,但對這些更改採取一點防禦措施可以為您未來的自己省去很多麻煩。
在這種情況下,通常最好對錯誤值進行明確檢查。這些可以向其他開發人員清楚地傳達可能的輸入和預期結果。
if (Number.isNaN(value) || value > 10) { // ...
以上是JavaScript 快速入門:糟糕的比較的詳細內容。更多資訊請關注PHP中文網其他相關文章!