typeof与instanceof比较+undefined与null各种值的相互比较

1、typeof:返回一个字符串

根据typeof判断对象
表达式                          返回值
typeof undefined           ‘undefined‘
typeof true                   ‘boolean‘
typeof 123                   ‘number‘
typeof "abc"               ‘string‘
typeof function() {}       ‘function‘

typeof {}                   ‘object‘
typeof []                   ‘object‘
typeof null                   ‘object‘

function f(...args) {
    console.log(typeof args); //object   console.log(args instanceof Array); //true}

总结:typeof返回值是一个字符串,该字符串说明运算数的类型,一般只返回一下六种:

number、string、Boolean、undefined、function、object(null、对象、数组)

对于数组、对象以及null,返回值都为object,这正是typeof的局限性。

2、instanceof:用于判断一个变量是否为某个类的实例

    var a = [];
    console.log(a instanceof Array); //true
    console.log(a instanceof Object); //true
以上两个结果都为true,因为Array是Object的子类。

    function test(){};
    var a = new test();
    console.log(a instanceof test) // true

3、null与undefined比较

以下结果涉及到以下类型转换:
    console.log("++++++++++++++++++++++++++++++++++")
    console.log(Boolean([]));//true
    console.log(Boolean({}));//true
    console.log(Number([]));//0
    console.log(Number({}));//NAN

在进行判断的时候,首先对等号左右进行数值转换!!!

    console.log(undefined === undefined);//true
    console.log(null === null);//true
    console.log(undefined === null);//false
    console.log(undefined == null);//true
总结:undefined、null与自己比较返回true;两者比较,相等但不全等。

    console.log("=====================");
    console.log(undefined == false);//false
    console.log(undefined == true);//false
    console.log(null == false);//false
    console.log(null == true);//false
总结:undefined、null既不等于true,也不等于false。

    console.log("======================");
    console.log(false == 0);//true
    console.log("======================");
    console.log(null == 0);//false
    console.log([] == 0);//true
    console.log({} == 0);//false
总结:空数组与0相等;但是空对象与0不相等。

    console.log("======================");
    console.log(null == false);//false
    console.log([] == false);//true
    console.log({} == false);//false
总结:空数组与0相等,false与0相等,所以空数组等于false;空对象与0不相等,false与0相等,所以空对象与false不相等。

    console.log("======================");
    console.log(([])?true:false);//true
    console.log(({})?true:false);//true
    console.log(([]==false)?true:false);//true
    console.log(({}==false)?true:false);//false

原文地址:https://www.cnblogs.com/minyDong/p/11530715.html

时间: 2024-10-22 16:51:07

typeof与instanceof比较+undefined与null各种值的相互比较的相关文章

理解Javascript__理解undefined和null

来自普遍的回答: 其实在 ECMAScript 的原始类型中,是有Undefined 和 Null 类型的. 这两种类型都分别对应了属于自己的唯一专用值,即undefined 和 null. 值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的,通过下列代码可以验证这一结论: alert(undefined == null); //true 尽管这两个值相等,但它们的含义不同. undefined 是声明了变量但未对其初始化时赋予该变量的值,n

Javascript中的typeof和instanceof

typeof 是一元操作符,而instanceof是二元操作符: typeof 操作的是一个变量,而instanceof前面是一个变量,后面是一个类型: typeof 返回的是一个字符串,而instanceof 返回的是一个布尔值. 1.typeof() http://www.cnblogs.com/jikey/archive/2010/05/05/1728337.html typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型.它返回值是一个字符串,该字符串说明运算数的类型.,

JS中 typeof 与 instanceof 的区别

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

typeof()和instanceof()用法区别

typeof()和instanceof()用法区别: 两者都是用来判断数据类型的 typeof()是能用来判断是不是属于五大类型Boolean,Number,String,Null,Undefined的,是比较宏观的判断: instanceof()判断数据类型相对typeof()来说更深入,能判断更具体的,比如Array,object,Boolean,Number,Strin等.

javascript typeof 和 instanceof 的区别和联系

JavaScript 中 typeof和instanceof都可以用来判断一个变量是否为空,或者是什么数据类型的.但它们之间还是有区别的: typeof typeof 是一个一元运算,放在一个运算数之前,运算数可以是任意类型. 它返回值是一个字符串,该字符串说明运算数的类型,因此如果想要判断是什么类型则是采用字符串判断的方法(加引号)来判断是否一致. typeof 一般只能返回的是基本的数据类型,如下几种: number, boolean, string, function, object, u

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

typeof和instanceof

typeof:  typeof是一个一元运算符,放在一个运算数之前. "boolean"---如果这个值是布尔值. "string"---如果这个值是字符串. "number"---如果这个值是数值. "undefined"---如果这个值未定义. "object"---如果这个值是对象(包括Number,String,Boolean这样的包装对象),数组或null. "function"

js中的typeof和instanceof和===

typeof: 用于判断number/string/boolean/underfined类型/function 不能判断:null和object ,不能区分object和Array instanceof: 判断具体的对象类型 ===: 用于判断undefined和null //五种基本类型 var num=1; var str="abc"; var bl=true; var nu=null; var undef=undefined; //三种特殊类型 var obj=new Objec

JS中typeof与instanceof的区别

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