数据类型

数据类型

在JavaScript中,包含6种数据类型,字符串(string),数值(number),布尔值(boolean),undefined,null及对象(object)。

  var str="Hello,world";
  var i=10;
  var f=2.3;
  var b=true;
  console.log(typeof str);//string
  console.log(typeof i);number
  console.log(typeof f);number
  console.log(typeof b);boolean
  console.log(typeof x);undefined

对象类型

对象类型是一种复合的数据类型,其基本元素由基本数据类型组成,当然不限于基本类型,比如对象类型中的值可以是其他的对象类型实例,如下:

var str="Hello,world";
var obj=new Object();
obj.str=str;
obj.num=2.3;
var array=new Array("foo","bar","zoo");
var func=function(){
    console.log("this is a Function");
};
console.log(typeof obj);//object
console.log(typeof func);//function
console.log(typeof array);//object
console.log(typeof str);//string

可以看出对象和数组的类型都是object,对象和数组的界限并不那么明显(实际上他们属于同一类型object)但他们的行为有所不同

类型的判断

JavaScript是一个弱类型的语言,但有时候我们需要知道数据类型 ( typeof instanceof )

  function handleMessage(handle,message){
    return handle(message);
}

在调用handleMessage时如果传入的handle不是函数则会报错,因此我们有必要调用前进行判断

function handleMessage(handle,message){
    if(typeof handle=="function"){
        return handle(message);
    }else{
        throw new Error("handle is not a Function");
    }
}

但是typeof并不是总有效,比如下面这种情况。

var obj={};
var array=[];
console.log(typeof(obj));//object
console.log(typeof(array));object

运行结果都是object,这样我们将无法判断数组和对象,这时候可以通过调用instanceof来进行判断

console.log(obj instanceof Array);//false
console.log(array instanceof Array);//true

因此我们可以将typeof操作符和instanceof

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容