typeof
总结:用来检测一个变量是不是基本数据类型,不适用于null和引用类型(引用类型一律返回object), typeof 操作符是确定一个变量是字符串、数值、布尔值,还是 undefined 的最佳工具。
返回值:undefined、string、boolean、number、object、function
规则:
var s = "Nicholas";
var b = true;
var i = 22;
var u;
var n = null;
var o = new Object();
var methond = function(){
console.log("this is a function");
}
alert(typeof s); // "string"
alert(typeof i); // "number"
alert(typeof b); // "boolean"
alert(typeof u); // "undefined"
alert(typeof n); // "object"
alert(typeof o); // "object"
alert(typeof methond); // "function"
alert(typeof NaN); // "number"
instanceof
总结:检测一个对象是不是引用类型的对象,不适用于检测 值为基本类型的变量
返回值:true、false
规则:
所有引用类型的值都是 Object 的实例
var arr = [];
var obj = {};
var date = new Date();
var reg = new RegExp();
var fun = function(){}
arr instanceof Array; // 返回 true
arr instanceof Object; // 返回 true
obj instanceof Object; // 返回 true
date instanceof Date; // 返回 true
date instanceof Object; // 返回 true
reg instanceof Object; // 返回 true
reg instanceof RegExp; // 返回 true
fun instanceof Object; // 返回 true
fun instanceof Function; // 返回 true
因为基本类型不是对象,使用 instanceof 操作符检测基本类型的值,则该操作符始终会返回 false。
var s = "Nicholas";
var b = true;
var i = 22;
var u;
var n = null;
var o = new Object();
var methond = function(){
console.log("this is a function");
}
s instanceof String; // 返回 false
b instanceof Boolean; // 返回 false
i instanceof Number; // 返回 false
u instanceof undefined; // 语法错误
n instanceof Object; // 返回 false
o instanceof Object; // 返回 true
methond instanceof Object; // 返回 true