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。