JavaScript-Boolean数据类型及其比较

Boolean数据类型,即布尔数据类型,只有两个值,分别是truefalse

  • !: 一个叹号是取反,首先将值转化为布尔类型的,然后再取反
console.log(!3); // false -> 先把3转化为boolean 此时为true, 然后再取反为false
console.log(!0); // true -> 先把0转化为boolean 此时为false,然后再取反为true
  • !!: 将其他的数据类型转化为boolean类型,相当于Boolean();
    console.log(Boolean('derrick')); // true
    console.log(!!'derrick'); // true

数据类型转化的规则:

  1. 如果只有一个值,判断这个值是真还是假,遵循:只有 0 NaN ''(空字符串) null undefined 这五个是假的(false),其余的都是真(true)。
console.log(!!0); // false
console.log(!!""); // false
console.log(!!undefined); // false
console.log(!!null); // false;
console.log(!!NaN); // false;
console.log(!![]); // true
  1. 如果是两个值比较是否相等,遵循这个规则:
    val1 == val2 两个值可能不是同一个数据类型的,如果是 == 比较的话,会进行默认的数据类型转换。
  1. 对象 == 对象 -> 不同的对象永远不相等
    console.log([] == []); // false
    console.log(function(){} == function(){}); // false
  1. 对象 == 字符串 -> 先将字符串转化为字符串(调用toString的方法),然后在比较。
console.log([] == ''); 
// true -> [].toString() => '' -> '' == '' 为true
  // [] 转换为字符串 ''
console.log({} == '');
// false -> {}.toString() => '[Object Object]' -> false
  // {} 转换为字符串 '[Object Object]'
  1. 对象 == 布尔类型 对象先转化为字符串(toString()),然后字符串再转化为数字(Number()),布尔类型也转化为数字(true是1 false是0),最后让两个数字比较。
console.log([] == false); // true
// [] -> [].String() 为 '' -> Number('') 为 0,
// false -> 转为数字0,故相等。
  1. 对象 == 数字 对象先转化为字符串(toString()),然后字符串再转化为数字(Number()),然后让两个数字比较。
  2. 数字 == 布尔 布尔转化为数字,然后两个数字进行比较
console.log(2 == true); // false
  1. 数字 == 字符串 字符串转化为数字,然后两个数字进行比较
  2. 字符串 == 布尔 都转化为数字然后进行比较
  3. null == undefined 结果是true
  4. null或者undefined 和其他任何数据类型比较都不相等
  1. 除了 == 是比较,=== 也是比较,=== 比较时,是绝对比较。val1 === val2。 如果数据类型不一样,则两个比较肯定不相等。
console.log(1 === "1"); // false
console.log(1 === true); // false

你可能感兴趣的:(JavaScript-Boolean数据类型及其比较)