js中分为七种内置类型,七种内置类型又分为两大类:基本类型和对象(Object)。
基本类型:number, null, undefined, boolean, string, symbol。(number是浮点型的)
对象是引用类型。
typeof对于基本类型来说,除了null以外,其他都可以显示正确的类型。
console.log(typeof 1); // number
console.log(typeof '1'); // string
console.log(typeof undefined); // undefined
console.log(typeof true); // true
console.log(typeof Symbol()); // symbol
console.log(typeof null); // object (null的数据类型使用typeof判断有bug存在)
console.log(typeof b); // undefined 这里b没有声明依旧显示undefined
如果想要获取一个变量的正确类型,可以通过Object.propotype.tostrign.call()获取。
console.log(Object.prototype.toString.call(null)); // [object Null]
作为初学者,今天看了对象基本类型的转换,遇到了一些不理解的地方:
js中这样介绍的:在条件判断时,除了undenfined, null, NaN, '', false, 0, -0, 其他所有值都转化为true, 包括所有对象。然后打印了一下,看结果:
console.log(false == undefined); // false
console.log(false == null); // false
console.log(false == NaN); // false
console.log(false == ''); // true
console.log(false == 0); // true
console.log(false == -0); // true
然后百度看了一下别人的博客undefined!=false之解 及==比较的规则 - 我的过去 - 博客园
最后的总结说,js中==两边的对象进行比较时,undefined会被转化为数字,转化为数字后的值又为NaN,所以在和undefined比较时,总是会返回false,对于null的还是不理解,基础太薄弱了。