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

JS数据类型的理解(猜测)的更多相关文章

  1. 我对js数据类型的理解和深浅(copy)的应用场景

    本人毕业一所专科院校,所学专业是计算机应用技术,在大学时对前端有了一定的了解之后,觉得自己对前端的兴趣十分强烈,开始自学前端,一路上也是坎坎坷坷,也有想要放弃的时候,还好坚持了下来,并且从事前端开发已 ...

  2. 一篇文章理解JS数据类型、深拷贝和浅拷贝

    前言 笔者最近整理了一些前端技术文章,如果有兴趣可以参考这里:muwoo blogs.接下来我们进入正片: js 数据类型 六种 基本数据类型: Boolean. 布尔值,true 和 false. ...

  3. vue—你必须知道的 js数据类型 前端学习 CSS 居中 事件委托和this 让js调试更简单—console AMD && CMD 模式识别课程笔记(一) web攻击 web安全之XSS JSONP && CORS css 定位 react小结

    vue—你必须知道的   目录 更多总结 猛戳这里 属性与方法 语法 计算属性 特殊属性 vue 样式绑定 vue事件处理器 表单控件绑定 父子组件通信 过渡效果 vue经验总结 javascript ...

  4. 由js apply与call方法想到的js数据类型(原始类型和引用类型)

    原文地址:由js apply与call方法想到的js数据类型(原始类型和引用类型) js的call方法与apply方法的区别在于第二个参数的不同,他们都有2个参数,第一个为对象(即需要用对象a继承b, ...

  5. 总结的JS数据类型判定(非常全面)

    用typeof 来检测数据类型 Javascript自带两套类型:基本数据类型(undefined,string,null,boolean,function,object)和对象类型. 但是如果尝试用 ...

  6. JavaScript学习10 JS数据类型、强制类型转换和对象属性

    JavaScript学习10 JS数据类型.强制类型转换和对象属性 JavaScript数据类型 JavaScript中有五种原始数据类型:Undefined.Null.Boolean.Number以 ...

  7. angular.js的一点理解

    对angular.js的一点理解 2015-01-14 13:18 by MrGeorgeZhao, 317 阅读, 4 评论, 收藏, 编辑 最近一直在学习angular.js.不得不说和jquer ...

  8. web开发与设计--js数据类型,js运营商

    1. js数据类型划分:号码值类型,布尔,串 由typeof能够看到什么类型的数据被详述. 举例: <span style="font-family:Microsoft YaHei;f ...

  9. [妙味JS基础]第四课:JS数据类型、类型转换

    知识点总结 JS数据类型:number数字(NaN).string字符串.boolean布尔值.函数类型.object对象(obj.[].{}.null).undefined未定义 typeof 用来 ...

随机推荐

  1. C# 笛卡尔积

    void Main() { string[] str1 = { "a", "b" }; " }; string[] str3 = { "一& ...

  2. 第十一章 管理类型(In .net4.5) 之 管理对象的生命周期

    1. 概述 本章内容包括 管理非托管资源.使用IDisposable接口 以及 管理析构器和垃圾回收. 2. 主要内容 2.1 理解垃圾回收机制 ① 代码执行的时候,内存中有两个地方存放数据项:堆 和 ...

  3. python爬取糗百第一页的笑话

    自学python网络爬虫,发现request比urllib还是要好用一些,因此利用request和BeautifulSoup来实现糗百的首页笑话的抓取.BeautifulSoup通过find和find ...

  4. 4.css度量单位

    在 CSS 长度设置中,我们经常需要使用到度量单位,即以什么样的单位设计我们的字 体或边框长度.而在 CSS 中长度单位又分为绝对长度和相对长度. 绝对长度指的是现实世界的度量单位,CSS 支持五种绝 ...

  5. ubuntu 14.04 下安装jdk8及 smartgithg

    公司使用git作为源码管理,又需要在ubuntu下工作,然后,自己就找了找,目前ubuntu下的git gui客户端,感觉 smartgit算是其中比较好用的一个,下边是具体安装步骤 说明,smart ...

  6. WPF 超链接方式

      <TextBlock>              <Hyperlink Name="hc" Click="hc_Click"   Navi ...

  7. jquery 简单弹出层

    预定义html代码:没有 所有代码通过js生成和移除. 预定义css .z-popup-overlay{ width:100%; min-height: 100%; height:800px; pos ...

  8. JavaScript高级程序设计之函数性能

    setTimeout 比 setInterval 性能更好 // 取代setInterval setTimeout(function self () { // code goes here setTi ...

  9. Windows 10 IoT Core Samples

    Windows 10 IoT Core Samples Welcome to the Windows 10 IoT Core Samples These samples have been valid ...

  10. Java使用FileLock实现Java进程互斥锁

    原理:JDK的nio包中FileLock实现类似Linux fcntl的文件锁, 可使文件被进程互斥访问.  借助此功能, 可以实现强大的Java进程互斥锁, 从而在应用层面保证同一时间只有惟一的Ja ...