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

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

1、undefined(未定义,找不到值时出现)
2、null(代表空值)
3、false(布尔值的false,字符串"false"布尔值为true)
4、数字0 (字符串"0"布尔值为true)
5、NaN(无法计算结果时出现,表示"非数值";但是typeof NaN==="number")
6、""(双引号)或''(单引号) (空字符串,中间有空格时也是true

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

不同数据类型转化为布尔值的结果

数据类型 转为true的值 转为false的值
Boolean true false
String 任何非空字符串 ''(空字符串)
Number 任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined n/a undefined

对于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

2.出现undefind的中情况

  • 未初始化的变量
    变量未定义 或 变量定义了没有赋值 或者 函数形参未赋值
  • 不返回任何结果的函数的调用结果
//函数return没有值 
function show(){
   return;
};
console.log(show());   // undefined

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

3.出现null的几种情况

  • 在JS的DOM元素获取中,如果没有获取到指定的元素对象,结果一般是null
  • Object.prototype.proto的值也是null
  • 在正则捕获的时候,如果没有捕获到结果,默认也是null
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容