Skip to content

JavaScript中有 6 种值为“假”,其他都为真

js
false  // (布尔型)
null //  (用于定义空的或者不存在的引用)
undefined  // (未定义值)
0  // (数值型)
"" '' // (空字符串) (字符型)
NaN //
false  // (布尔型)
null //  (用于定义空的或者不存在的引用)
undefined  // (未定义值)
0  // (数值型)
"" '' // (空字符串) (字符型)
NaN //

虽然这六个值都为“假”,它们之间并非都相等

js
console.log( false == null )      // false
console.log( false == undefined ) // false
console.log( false == 0 )         // true
console.log( false == '' )        // true
console.log( false == NaN )       // false
 
console.log( null == undefined ) // true
console.log( null == 0 )         // false
console.log( null == '' )        // false
console.log( null == NaN )       // false
 
console.log( undefined == 0)   // false
console.log( undefined == '')  // false
console.log( undefined == NaN) // false
 
console.log( 0 == '' )  // true
console.log( 0 == NaN ) // false
console.log( false == null )      // false
console.log( false == undefined ) // false
console.log( false == 0 )         // true
console.log( false == '' )        // true
console.log( false == NaN )       // false
 
console.log( null == undefined ) // true
console.log( null == 0 )         // false
console.log( null == '' )        // false
console.log( null == NaN )       // false
 
console.log( undefined == 0)   // false
console.log( undefined == '')  // false
console.log( undefined == NaN) // false
 
console.log( 0 == '' )  // true
console.log( 0 == NaN ) // false
  1. false 除了和自身比较为 true 外,和 0,"" 比较也为 true
  2. null 只和 undefined 比较时为 true, 反过来 undefined 也仅和 null 比较为 true,没有第二个
  3. 0 除了和 false 比较为 true,还有空字符串 ''" 和空数组 []比较也为true
  4. 空字符串 '' 除了和 false 比较为 true,还有一个数字 0

封装假值判断

js
function jsTrue(val) {
  if (val === '') return false
  else if (val === 0) return true
  else if (Object.is(val, NaN)) return false
  else if (val === 'NaN') return false
  else if (!val) return false
  else return true
}
function jsTrue(val) {
  if (val === '') return false
  else if (val === 0) return true
  else if (Object.is(val, NaN)) return false
  else if (val === 'NaN') return false
  else if (!val) return false
  else return true
}

封装undefined、null、NaN的判断函数

js
// 方法一
var a=undefined; 
if (typeof(a) == "undefined"){ 
	console.log("undefined"); 
}

// 方法二
var a=undefined;
if(a === undefined){
	console.log("undefined")
}
// 方法一
var a=undefined; 
if (typeof(a) == "undefined"){ 
	console.log("undefined"); 
}

// 方法二
var a=undefined;
if(a === undefined){
	console.log("undefined")
}

判断对象为空

js
// 方法一
var e={}
if(Object.keys(e).length === 0){
	console.log("{}")
}

// 方法二
var e={};
if(JSON.stringify(e) == "{}"){
	console.log("{}")
}
// 方法一
var e={}
if(Object.keys(e).length === 0){
	console.log("{}")
}

// 方法二
var e={};
if(JSON.stringify(e) == "{}"){
	console.log("{}")
}

JS提供的判断方法

js
Object.is(val, NaN)
val === NaN
typeof(val) == 'NaN'
Object.is(val, NaN)
val === NaN
typeof(val) == 'NaN'