首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 空值判斷全解析:undefined vs null vs 空字符串 vs 0 vs false

     編輯:程式設計綜合問答

核心結論速查表

變量狀態if (x)x == null說明
未聲明 x拋出 ReferenceError拋出 ReferenceError嚴格模式下直接報錯
var x; (未賦值)falsetrue默認值 undefined
var x = null;falsetrue顯式空值
var x = 0;falsefalse數字零
var x = '';falsefalse空字符串
var x = false;falsefalse布爾假

深度解析

1. 未聲明 vs 未定義


// 情況 ①:完全沒有 var/let/const 聲明
if (x) {} // ReferenceError: x is not defined

// 情況 ②:聲明但未賦值
var x;
if (x) {} // false
x == null // true (undefined == null 為 true)

2. 真值/假值 判斷規則

JS 中只有 6 個假值:undefined, null, 0, '', false, NaN。其餘均為真值(包括 [], {}, "0", "false")。

3. 相等 vs 嚴格相等


null == undefined   // true  (類型轉換後相等)
null === undefined  // false (類型不同)
null == 0           // false
'' == 0             // true  (字符串轉數字)
[] == ''            // true  (數組轉空串)

最佳實踐建議

  1. 判斷「有無值」:用 x == null 同時檢查 null/undefined
  2. 判斷「非空字符串」:用 x != null && x !== '' 或 !!x(注意 "0" 會通過)
  3. 判斷「有效數字」:用 typeof x === 'number' && !isNaN(x)
  4. 避免隱式轉換:優先用 ===,明確意圖

實用封裝函數


const isEmpty = v => v == null || v === '' || (Array.isArray(v) && v.length === 0) || (typeof v === 'object' && Object.keys(v).length === 0);
const isBlank = v => v == null || String(v).trim() === '';

理解 JS 類型轉換規則,能避免 90% 的邏輯判斷 Bug。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved