javascript typeof 和 instanceof 的区别和联系

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript typeof 和 instanceof 的区别和联系相关的知识,希望对你有一定的参考价值。

typeof是返回对象类型,而instanceof是判断一个对象是否是某个类的实例,返回的事false和true。作用上typeof不能用来检测数组,而instanceof可以 参考技术A ypeof和instanceof的目的都是检测变量的类型,两个的区别在于typeof一般是检测的是基本数据类型,instanceof主要检测的是引用类型!

JavaScript typeof运算符和数据类型

// js有6种数据类型:Undefined、Null、Boolean、String、Number、Object

//(01)typeof  
console.log(typeof undefined); //undefined
console.log(typeof null); //object   :特殊1
console.log(typeof true); //boolean
console.log(typeof ‘‘); //string
console.log(typeof 0); //number
console.log(typeof {}); //object
console.log(typeof function () { }); //function    :特殊2

//(02)Undefined 用于没有初始化的变量赋值undefined

//(03)Null undefined派生于null,用于表示一个空引用(指针),undefined == null =>true

//(04)Boolean 值为 true和false ,JavaScript区分大小写,所以True等不是Boolean的值
//类型转换
//Boolean() ,将任何类型转换为布尔类型
var hello = Boolean("hello"); //调用方法(不是构造函数)显示类型转换
console.log(hello); //true
if (hello)
{ //隐式类型转换
    console.log(隐式类型转换成功!);
}

//(05)Number
//声明
var num = 10; //10进制
var num = 077; //8进制
var num = 0xa; //16进制 ,0=>零
console.log(num); //10

//浮点类型,占用内存比整数类型打2倍
var box = 12.0;
console.log(box); //自动转换为:12

//e表示法(科学计数法)
var box = 1.23e3;
console.log(box); // 小数点向后移动n位:1230 
var box = 1.23e-3;
console.log(box); //向前移动n位:0.00123;

// 浮点类型精确度为17位,运算的话,有时会不精准
console.log(0.1 + 0.2); //0.30000000000000004

//NaN ,not a number
var box = 0 / 0;
console.log(box); //0不能作除数:NaN
console.log(box + 1); //任何与NaN运算的结果都是NaN :NaN
console.log(NaN + 1); //任何与NaN运算的结果都是NaN :NaN
console.log(isNaN(box)); //true
console.log(isNaN({})); //隐式调用对象的toString方法 :true

//类型转换
//Number(),将任何类型转化为数字
console.log(Number(box)); //NaN
console.log(Number(true)); //1
//parseInt()
console.log(parseInt(0xa));//10  
console.log(parseInt(a, 16));//10
console.log(parseInt(70, 8));//56
//parsenFloat() 同上

//(06)String :字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改
//变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的
//字符串填充该变量
//toString()
var box = 10;
console.log(box.toString(2));//可以进制转换:1010
//类型转换
//String(),将任何类型转换为字符串

//(07)Object :
//类型转换
//Object(),将任何类型转换为对象;

//最后总结: 类型转换貌似就是调用的构造函数来创建对应类型的对象,网上说的和构造函数有区别的说法应该是不对的!

以上是关于javascript typeof 和 instanceof 的区别和联系的主要内容,如果未能解决你的问题,请参考以下文章

Javascript中的typeof和instanceof

javascript typeof 和 instanceof 的区别和联系

javascript中typeof和instanceof

JavaScript typeof, null, 和 undefined

JavaScript-Runoob:JavaScript typeof, null, undefined

关于JavaScript中的typeof与instanceof