JavaScript 中 typeof 和 instanceof 经常使用来判断一个变量是否为空,或者是什么类型的。但它们之间仍是有区别的:数组
typeofdom
typeof 是一个一元运算,放在一个运算数以前,运算数能够是任意类型。函数
它返回值是一个字符串,该字符串说明运算数的类型。(typeof 运算符返回一个用来表示表达式的数据类型的字符串。 )测试
typeof其实就是判断参数是什么类型的实例,就一个参数spa
typeof 通常只能返回以下几个结果:"number"、"string"、"boolean"、"object"、"function" 和 "undefined"。prototype
运算数为数字 typeof(x) = "number"
字符串 typeof(x) = "string"
布尔值 typeof(x) = "boolean"
对象,数组和null typeof(x) = "object"
函数 typeof(x) = "function"
console.log(typeof (123));//typeof(123)返回"number" console.log(typeof ("123"));//typeof("123")返回"string" var param1 = "string"; var param2 = new Object(); var param3 = 10; console.log(typeof(param1)+"\n"+typeof(param2)+"\n"+typeof(param3));
// string object number
咱们可使用 typeof 来获取一个变量是否存在,如 if(typeof a!="undefined"){alert("ok")},而不要去使用 if(a) 由于若是 a 不存在(未声明)则会出错,对于 Array,Null 等特殊对象使用 typeof 一概返回 object,这正是 typeof 的局限性。code
常常会在js里用到数组,好比 多个名字相同的input, 如果动态生成的, 提交时就须要判断其是不是数组.
if(document.mylist.length != "undefined" ) {} //这个用法有误.
正确的是 if( typeof(document.mylist.length) != "undefined" ) {}
或 if( !isNaN(document.mylist.length) ) {}
typeof的运算数未定义,返回的就是 "undefined".
在 JavaScript 中,判断一个变量的类型尝尝会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,不管引用的是什么类型的对象,它都返回 “object”。这就须要用到instanceof来检测某个对象是否是另外一个对象的实例。