我们都知道, JavaScrip 是一种弱类型语言(也叫动态语言).这意味这,我们不需要提前声明变量的类型,直接在程序运行时,它的类型就被确定下来了.如下面的变量a
var a ;
a = 1;
typeof(a); // a => number
a = 'str';
typeof(a); // a => String
a = true;
typeof(a); // a=> boolean
一、九大数据类型家族
最新的 ECMAScript 标准定义了 9 种数据类型,它们分为两个派系,分别是:
- 原始类型(基本数据类型)
- 成员: undefined 、Boolean 、Number 、String 、ES10-BigInt 、ES6-Symbol (null)
- 对象类型
- 成员有 :Object(Array Function Object)
二、typeof
typeof
操作符的作用是检查数据类型,但是它不能检查出 Object 派生出的结构类型。因为它检测 Object 派生的结构类型时,总会得到object
。
考你一个小问题,请说出下面的数据类型是什么?
typeof null; // =>object
typeof function; // => function
typeof Object; // => function
答案依次是 object 、function 、 function 。你都答对了吗?我相信一定有人和我一样,认为第二个的答案应该是 object ,而非 function 。
当我打印 Object ,你在看看,是不是恍然大悟了。
没错,Object 是构造函数,同样的,Array、String、Boolean 、Date 、RegExp 也是构造函数。
三、转Boolean值
数据转 Boolean 值,是我们常用的判断。那么,你能得出下面的结果吗?
Boolean(1);
Boolean(0);
Boolean(-1);
Boolean('false');
Boolean(' ');
Boolean('');
Boolean({name:'zhangSan'});
Boolean({});
Boolean([1,2,3]);
Boolean([]);
Boolean(null);
Boolean(undefined);
Boolean(false)
答案我就不说了,但是我能给你们一个转 Boolean 的口诀。
js中所有数据类型转布尔值,除了undefined 、null 、’’ 、 NaN 、 0 和 false 为false,其他都是true