JS中 typeof 与 instanceof 的区别

JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的。但它们之间还是有区别的:
typeof
是一个一元运算,放在一个运算数之前,运算数可以是任意类型。
它返回值是一个字符串,该字符串说明运算数的类型。
typeof 一般只能返回如下几个结果:number,boolean,string,function,object,undefined。(Array,Null 均返回 object ,无法判断这些类型)
例子:

typeof(1): number
typeof(NaN): number
typeof(Number.MIN_VALUE): number
typeof(Infinity): number
typeof("123"): string
typeof(true): boolean
typeof(window): object
typeof(Array()): object
typeof(function(){}): function
typeof(document): object
typeof(null): object
typeof(eval): function
typeof(Date): function
typeof(sss): undefined
typeof(undefined): undefined

我们可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!="undefined"){ alert("ok") },而不要去使用 if(a) 因为如果 a 不存在(未声明)则会出错,
对于 Array,Null 等特殊对象使用 typeof 一律返回 object,这正是 typeof 的局限性。
如果我们希望获取一个对象是否是数组,或判断某个变量是否是某个对象的实例则要选择使用instanceof。

instanceof 用于判断一个对象是否是某个类或者它的子类的一个实例,instanceof通过返回一个布尔值来指出。
如果判断对象是直接赋值的string number undefined类型变量 ,可能无法输出结果。

<script>
var a = new Number(9);
var b = 9;
var c = ‘hello‘
var d = [‘hello‘,‘hi‘]
var e = {‘name‘:‘joyo‘,‘age‘:18};
var f = function(){};
var g = 0;
var h = ‘‘; // 当值为空或者 undefined 时 ,用 instanceof 无法判断 ,可以用 typeof
document.write(a instanceof Number ) // ture
document.write(b instanceof Number ) // false 直接赋值的 Number 变量 false * (如果是用new申明的结果为 true ,下同)
document.write(c instanceof String) // false 直接赋值的 string 变量 false *
document.write(d instanceof Array) // true 直接赋值的 Array 变量 true
document.write(e instanceof Object) // true 直接赋值的 Object 变量 true
document.write(f instanceof Function) // true 直接赋值的 Function 变量 true
document.write(g instanceof Boolean) // false 直接赋值的 Boolean 变量 false *
</script>

用法一:

<script>
var a=new Array();
document.write(a instanceof Array); // true
document.write(a instanceof Object); // true Array是object的子类。
</script>

用法二:
再如:

<script>
function test(){};
var a = new test();
document.write(a instanceof test) // true
</script>

用法三:

<script>
if(window instanceof Object)
alert(‘Y‘);
else
alert(‘N‘) // 输出 Y 说明 window 也是一个对象的一个实例
alert(typeof(window)) // 输出 object
</script>

谈到instanceof我们要多插入一个问题,就是function的arguments,我们大家也许都认为arguments是一个Array,但如果使用instaceof去测试会发现arguments不是一个Array对象,尽管看起来很像。(这个待验证)

时间: 2024-11-23 14:58:00

JS中 typeof 与 instanceof 的区别的相关文章

js中typeof和instanceof用法区别

typeof和instanceof的区别 typeof和instanceof都可以用来判断变量,它们的用法有很大区别: typeof会返回一个变量的基本类型,只有以下几种:number,boolean,string,object,undefined,function:例: alert(typeof(1));//number alert(typeof("abc"));//string alert(typeof(true));//boolean alert(typeof(m));//und

JS中typeof与instanceof的区别 (2010-05-26 10:47:40

JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: typeof typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型. 它返回值是一个字符串,该字符串说明运算数的类型.typeof 一般只能返回如下几个结果: number,boolean,string,function,object,undefined.我们可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!="un

JS中typeof与instanceof的区别

JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: typeof typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型. 它返回值是一个字符串,该字符串说明运算数的类型.typeof 一般只能返回如下几个结果: number,boolean,string,function,object,undefined.我们可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!="un

JS中typeof和instanceof的区别

01==> 浅谈JS中的typeof和instanceof的区别 // JS中的typeof和instanceof常用来变量是什么类型. // typeof一般返回以下几个字符串: // String Boolean","Number" "object","function","undefined" // 对于Array,Null等特殊对象使用typeof一律返回object,这正是typeof的局限性. 有些

javascript 中 typeof 和 instanceof 的区别

在 javascript 中经常会用到 typeof 和 instanceof 来判断一个对象的类型,可能 typeof 用得多些,那来看看这两个之间的区别吧. typeof : typeof 是一个一元运算符,放在一个运算数之前,运算数可以是任意类型.它返回值是一个字符串,该字符串说明运算数的类型. typeof 一般只能返回如下几个结果:number,boolean,string,function,object,undefined. ? 1 2 3 4 5 6 7 8 <script typ

详解js中typeof、instanceof与constructor

详解js中typeof.instanceof与constructor typeof返回一个表达式的数据类型的字符串,返回结果为js基本的数据类型,包括number,boolean,string,object,undefined,function.语法为typeof(data) 或 typeof data instanceof则为判断一个对象是否为某一数据类型,或一个变量是否为一个对象的实例;返回boolean类型 语法为 o instanceof A 以下为综合实例: 1<script type

javascript中typeof与instanceof的区别

JavaScript 中 typeof 和 instanceof 常用来判断一个变量是否为空,或者是什么类型的.但它们之间还是有区别的: typeof typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型. 它返回值是一个字符串,该字符串说明运算数的类型.typeof 一般只能返回如下几个结果: number,boolean,string,function,object,undefined.我们可以使用 typeof 来获取一个变量是否存在,如 if(typeof a!="un

javascript中 typeof和instanceof的区别

<一> js中typeof的用法进行了详细的汇总介绍 (1)返回一个变量的基本类型 回顾基本类型(number,string,boolean,null,undefined,object) console.log(typeof 1); // number console.log(typeof 'abc'); // string console.log(typeof true); // boolean let o = {a:'23'}; console.log(typeof o); // obje

js中typeof与instanceof区别

今天写JS代码,遇到动态生成多个名称相同的input复选按钮 需要判断其是否是数组,用到了if (typeof(document.MapCheckMgr.checkid)!="undefined") 以前用得少,就顺便查了一下关于typeof的那些事 typeof用以获取一个变量或者表达式的类型,typeof一般只能返回如下几个结果: number,boolean,string,function(函数),object(NULL,数组,对象),undefined. 如: alert(ty