要检测一个变量是不是基础类型,用typeof操作符是最佳工具。更具体一点,typeof操作符是确定一个变量是字符串、数值、布尔值、还是undefined的最佳工具,如果变量的值是一个对象或null,则typeof操作符会返回“object”;
虽然在检测数据类型时,typeof是非常得力的助手,但在检测引用类型值时,这个操作符的用处不大。通常,我们并不是想知道某个值是对象,而是想知道它是什么类型的对象,为此,ECMAScript提供了instanceof操作符,如果变量是给定引用类型的实例,那么instanceof操作符就会返回true。
根据规定,所有引用类型的值都是object的实例,因此,在检测一个引用类型值和object构造函数时,instanceof操作符始终返回true,当然,如果使用instanceof操作符来检测基本类型的值,则该操作符始终返回false,因为基本类型不是对象。