JS一些常见题

74 阅读1分钟

JS一些常见题

typeof能判断哪些类型?

  • typeof能判断所有值类型
let a;           console.log(typeof a) // undefined
a = 'string';    console.log(typeof a) // string
a = 1;           console.log(typeof a) // number
a = true;        console.log(typeof a) // boolean
a = Symbol('a'); console.log(typeof a) // Symbol
  • typeof也能判断函数类型
function fn() {}
console.log(typeof fn);
  • typeof只能判断是否是引用类型,不能细分
a = null;        console.log(typeof a); // object
a = {a: 100};    console.log(typeof a); // object
a = ['1', '2'];  console.log(typeof a); // object

这个时候可以使用instanceof来划分

console.log(a instanceof Array); // true

===和==区别

// '=='会进行类型转换
console.log(100 == '100'); // true
console.log(0 == ''); // true
console.log(0 == false); // true
console.log('' == false); // true
console.log([] == false); // true
console.log(false == ''); // true
console.log(null == undefined); // true
console.log(NaN == NaN); // false 特殊NaN永远不等于NaN

/* 
  truly变量:!!a === true的变量
  falsely变量:!!a === false的变量
*/

0.1+0.2为什么不等于0.3?

我们先来了解一下计算过程,因为在转换为浮点数过程中小数位只能保留52位,会可能出现第一次精度丢失,在浮点数相加后可能又会多出1位,需要处理进位,可能又会出现第二次精度丢失,最终导致结果不等于0.3。

1643336550636.png