当前位置: 首页 > news >正文

JS数据类型的理解(猜测)

Js 数据类型

 对于这个主题,首先来看几个问题,如果你对这几个问题很清楚的话,那就请直接跳过吧,不用接着往下看了,如果不清楚,建议你还是看看。

  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

转载于:https://www.cnblogs.com/answercard/p/3806370.html

相关文章:

  • redis 初探
  • freemarker报错之十一
  • TextView属性详解
  • Xcode编译WebApps找不到js的错误解决办法转
  • python的flex服务端数据接口开发
  • Ruby Web框架
  • js千分位的函数
  • SVN 安装到vs2010及SVN的用法
  • SpringMVC 中HttpMessageConverter简介和Http请求415 Unsupported Media Type的问题
  • Arcgis 10.1中空间连接功能
  • SQL SERVER索引
  • 浅谈C++多态性
  • Ubuntu12.04下使用valgrind内存测试工具测试Qt程序
  • 占位符的使用
  • OpenFlow协议标准演进过程
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • Apache Spark Streaming 使用实例
  • java第三方包学习之lombok
  • Js基础知识(一) - 变量
  • python3 使用 asyncio 代替线程
  • Python十分钟制作属于你自己的个性logo
  • VuePress 静态网站生成
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 记一次和乔布斯合作最难忘的经历
  • 排序算法学习笔记
  • 盘点那些不知名却常用的 Git 操作
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 责任链模式的两种实现
  • # Panda3d 碰撞检测系统介绍
  • # 数论-逆元
  • ()、[]、{}、(())、[[]]命令替换
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (三)docker:Dockerfile构建容器运行jar包
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .ui文件相关
  • :中兴通讯为何成功
  • @hook扩展分析
  • @RequestMapping 的作用是什么?
  • @SpringBootApplication 包含的三个注解及其含义
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [1] 平面(Plane)图形的生成算法
  • [acwing周赛复盘] 第 94 场周赛20230311
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心