一、js中布尔值为false的六种情况

下面6种值转化为布尔值时为false,其他转化都为true

  1. 下面6种值转化为布尔值时为false,其他转化都为true
  2. null(代表空值)
  3. false(布尔值的false,字符串"false"布尔值为true)
  4. 0(数字0,字符串"0"布尔值为true)
  5. NaN(无法计算结果时出现,表示"非数值";但是typeof NaN===“number”)
  6. “”(双引号)或’'(单引号) (空字符串,中间有空格时也是true)
	  var a = ""; //false
      var a = 0; //false
      var a = undefined; //false
      var a = null; //false
      var a = NaN; //false
      var a = " "; //true   空格不是空字符串
      
      a = Boolean(a);
      console.log(a);

注意空数组空对象,负值转的布尔值时都为true

在这里插入图片描述

对于0, ‘’, null, undefined, NaN,{}, [], Infinity求布尔值,分别是false false
false false false true true true.

因此我们知道的一点是:对象的布尔值是true,即使是对象{}。

"!!"将表达式进行强制转化为bool值的运算,运算结果为true或者false。

例如 array=[1,2,3]
array.num=undefind
!array.num=true
!!array.num=false

二、数组转换为布尔值有一些需要注意的地方

1.数组直接使用Boolean转换时,结果都是true;

var arr = [1, 2, 3]; //true
	var arr = []; //true
	
	var b = Boolean(arr);
	console.log(b);

	console.log(![]); //false

2.但是数组在进行比较的时候,就不一定是这样了,例如:

console.log(![] == []); //true

在这里,它们是这样转换为布尔值比较的

  1. 因为[]直接转换为布尔值的结果是true,所以![]转换为布尔值的结果是false。
  2. 而[]会先转换为字符串"“,然后字符串”"再转换为布尔值false。
  3. 所以它们比较的结果是true。

所以 ![] == “” 的结果也是true。

注意:
遇到 ! 需要优先将值转换为布尔值并且取反,不是遇到!优先将值转换为字符串。

根据上面说的要注意的内容来看,能进入下面这个判断条件的a可取的值只有6种:“”、0、undefined、null、false、NaN。

if (!a) {}

三、出现undefind中的情况

1、未初始化的变量

变量未定义 或 变量定义了没有赋值 或者 函数形参未赋值

2、不返回任何结果的函数的调用结果

函数return没有值

function show(){
   return;
};
console.log(show());   // undefined

函数没有return

function show(){
            
};
console.log(show());  // undefined
3. 不存在的对象属性或方法
let favoriteMovie = {
  title: 'Blade Runner'
};
favoriteMovie.actors; // => undefined
4.越界索引数组元素
const colors = ['blue', 'white', 'red'];
colors[5];  // => undefined
colors[-1]; // => undefined

四、出现null的几种情况

  1. 在JS的DOM元素获取中,如果没有获取到指定的元素对象,结果一般是null。
  2. Object.prototype._proto_的值也是null。
  3. 在正则捕获的时候,如果没有捕获到结果,默认也是null。
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐