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#高级功能(三)Action、Func,Tuple

    Action和Func泛型委托实际上就是一个.NET Framework预定义的委托,3.5引入的特性.基本涵盖了所有常用的委托,所以一般不用用户重新声明. Action系列泛型委托,是没有返回参数的 ...

  2. Ubuntu 12.04 添加新用户并启用root登录

    启动root sudo passwd 输入密码 输入root 新密码并重复 su 切换root 添加用户比如hduser 修改密码hduserchmod u+w /etc/sudoersvi sudo ...

  3. 第二十二章 数据访问(In .net4.5) 之 集合

    1. 概述 本章内容包括 .net平台中的集合.如何选择集合 以及 如何实现自定义集合. 2. 主要内容 2.1 使用数组(Array) ]; ; x < arrayOfInt.Length;  ...

  4. 关于linux上pdf阅读器

    今天也是倒腾linux 上pdf阅读器好久. 1.okular是挺好的,但是却太大了,好多功能,我没有细看.我简单的打开了几个pdf文件,发现加载速度还是太慢了.所以基于种种,我给卸载掉了. 安装直接 ...

  5. Python超简单的HTTP服务器

    Python超简单的HTTP服务器 安装了python就可以 python -m SimpleHTTPServer 执行这一个命令即可实现一个HTTP服务器,将当前目录设为HTTP服务目录,可以通过h ...

  6. java 复习

    整型: byte 1 short 2 int 4 long 80b1001 1_233_32 1341414141414Ljava 没有无符号类型浮点型:float 4 double 812.2f 无 ...

  7. eval和new Function的区别

    eval和new Function都可以动态解析和执行字符串.但是它们对解析内容的运行环境判定不同. var a = 'global scope' function b(){ var a = 'loc ...

  8. sql server 判断是否存在数据库,表,列,视图

    1 判断数据库是否存在if exists (select * from sys.databases where name = '数据库名')    drop database [数据库名] 2 判断表 ...

  9. 【FAQ】【JSP】HTTP Status 500 - Summary(问题排查时候应该仔细分析所有的错误打印说明)

    Question 1.HTTP Status 500 - Unable to compile class for JSP:'***' cannot be resolved to a type 原因分析 ...

  10. microsoft azure Media Services 媒体服务解决方案

    用安全的方式为您随时随地跨设备传送媒体内容.提供可伸缩的端到端媒体解决方案 可用于高级视频工作流的云 实现奥运会规模的直播与点播媒体传送 高可用的编码和流式处理 支持 Flash.iOS.Androi ...