博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Js 数据类型
阅读量:7060 次
发布时间:2019-06-28

本文共 2159 字,大约阅读时间需要 7 分钟。

 对于这个主题,首先来看几个问题,如果你对这几个问题很清楚的话,那就请直接跳过吧,不用接着往下看了,如果不清楚,建议你还是看看。
 
  1)如果判断函数?function 和object的联系是什么?
 
  2)typeof 和instanceof 的区别是什么和作用是什么?
 
  3)undefined 和null 有什么区别?
 
  4)js 有哪几种基本的数据类型?
 
  5)Undefined,undefined,’undefined’分别是什么?
 
  6)typeof null  ,null instanceof Object 的值是什么
 
关于类型,不同的书上有很多的不同的说法,
 
  首先看看ECMA 是怎么说的,ECMA262-5上说 ECMAScript的类型是Undefined,Null,Boolean,String,Number,Object,每种类型对应一种值,分别是undefined,null,true/false, "elements",number,
 
a collection of prototies,每种类型都有一个对应的值,分别为 ‘undefined’,'null','boolean','string','number','object'.这种说法不能解释function 是什么类型,null 和undefined 的区别
 
  javascript高级教程第一版(p11页)中说,js只有5中原始的基本数据类型(Undefined,Null,Boolean,String,Number),很明显不对。那么,对象是是什么呢?到第二版中,将Object增加进来了,说Object是
一种复杂的数据类型。所有的值都将是上述6种类型之一,我觉得这种说法还靠谱一点,但是如果 是函数呢?这就说不清楚它属于哪一类了。
 
  aimingoo 提到javascript中两套类型系统,一个是基本数据类型,另外一个是对象类型系统,基本数据类型包括6种,分别是undefined,string,null,boolean,function,object,基本数据类型是通过typeof
 
来检测的,对象类型系统是以基础类型系统为基础的,对象类型系统通过instanceof来检测,对象类型与基本数据类型存在着对应的关系,例如String->sting, Boolean-> boolean,Number->number,他们只是映射,本质上
 
是不同的,undefined,string,null,boolean 是值类型的。function,object 是引用类型的。String,Boolean,Number 类均是object类型,是Object的子类。Function() 也是引用类型,所有的引用类型均是Object的子类。
 
  我觉得通过两套类型系统理解js中的数据类型是比较靠谱的。首先它通过typeof 和instanceof 来区别基本数据类型和对象类型,不同的对象类型通过 a instanceof Type 来判断是否是其相应的类型,
 
例如:alert(typeof null ) 结果是 “object”,但是alert(null instanceof Object)  结果是false 这个说明null 是对象,但是它不是Object的子类,其次,它能够解答 “aaaa”.length为什么是4,这个是一个装箱操作,
 
当.运算符发现左边的操作数是一个“值类型”数据时,会隐式地调用Object(x)过程将它转为对象,于是"aaaa".length 将被隐式地转化为 String("aaaa").length,而String() 是有length 属性的,所以有这个值4
 
回到本文开始处的几个问题,很明显都可以解释了:
 
  1)如果判断函数?function 和object的联系是什么?
 
    通过typeof 来判断,function和object都是引用类型,函数的基本数据类型,object是对象类型,function是object的子类
 
  2)typeof 和instanceof 的区别是什么和作用是什么?
 
    typeof 用来判断基本数据类型,instanceof 来判断对象类型, 但function 有点特殊 alert(typeof function(){}) //"function"  alert(function(){} instanceof Object)  //true
 
  3)undefined 和null 有什么区别?
 
    一个是值类型,一个是引用类型
 
  4)js 有哪几种基本的数据类型?
 
    6种:undefined,boolean,string,number,object,function
 
  5)Undefined,undefined,’undefined’分别是什么?
 
    Undefined 是类型,undefined 是值,’undefined‘是类型的名称
 
  6)typeof null  ,null instanceof Object 的值是什么
 
    ’object‘  ,false
来源: <>
 

转载地址:http://kufll.baihongyu.com/

你可能感兴趣的文章
5G一周热闻:华为夺联通5G大单,首张5G电话卡发放
查看>>
马化腾演讲、张勇内部讲话暴露两大巨头云上端倪
查看>>
云原生应用程序的架构应该怎么设计?
查看>>
腾讯58篇论文入选CVPR 2019,涵盖视觉对抗学习等方向
查看>>
克服自我限制
查看>>
re:Invent第三天:除了拥抱混合云,AWS还一口气发了这些新产品
查看>>
Java工程师的成长路线图是什么?
查看>>
RedHat发布JBoss 7.2,完全支持Java EE 8规范
查看>>
红帽发布第四季度和2019财年报告,多项指标维持两位数增速
查看>>
精益业务分析宣言解读
查看>>
Amazon Aurora新增“回溯”特性,让DB集群可以回退到特定时间点
查看>>
解读2015之Spark篇:新生态系统的形成
查看>>
为什么你写的代码糟透了?
查看>>
从蚂蚁金服实践入手,带你深入了解 Service Mesh
查看>>
同事反馈环:为什么度量和会议还不够充分
查看>>
Facebook Sonar:一款可视化及交互式移动应用调试工具
查看>>
.NET Core 3.0中的数据库驱动框架System.Data
查看>>
取代Python多进程!伯克利开源分布式框架Ray
查看>>
极客邦、InfoQ、听云联合主办的首届APMCon 2016大会回顾
查看>>
语义鸿沟、异构鸿沟、数据缺失,多模态技术如何跨过这些坎?
查看>>