一、基本数据类型:
1、js中基本数据类型:String、Boolean、Number、Null、undefined;
复合数据类型:object对象类型、Array数组类型
特殊对象:function函数类型

基本数据类型
① String  —字符串。
    若使用var声明变量,var x = “Andy” ,x 为字符串。将一个值转换成字符串:toString( )方法
 
② Boolean—布尔值。
    只有两个值:true或者false; 但true不一定等于1,false也不一定等于0;
    要将一个值转换为其对应的Boolean值,可以调用类型转换函数Boolean( )
 
③ Number —整数、浮点数、NaN.
    其中:任何数值除以0会返回NaN,而NaN除以任何数值也返回NaN;
    isNaN( )函数可以确定一个参数是否 “不是数值”。
    例如:alert(isNaN(“Andy”))// “Andy”不是数值,返回true;
            alert(isNaN(25))//25是数值,返回false;
            alert(isNaN(NaN ))//返回true;
ps:   Number()函数的转换规则:
       字符串:可用parseIn( )和parseFloat( )来转换成数值。
       Boolean值:true和false将分别替换为1和0
       null值:返回0
       undefined:返回NaN;
       对象:可调用valueOf( )方法,toString()方法
 
④ Null— 空。
    如果定义的变量在未来用于保存对象,最好将变量初始化为null;
    例:var a = null;
 
⑤ undefined—一个值:undefined。
    使用var声明变量但未对其加以初始化时,这个变量的值就是undefined。
    例:var a;
         alert(a);//undefined
 
PS:① null与undefined的区别:
         undefined没有必要显示设置值,即变量不含有值;
         null需要被初始化,用于、保存清空变量
     ②布尔值、数值、对象、字符串都有toString( )方法,null和undefined没有此方法。

复合数据类型
① object类型— 例:var a = new object( )
                     属性和方法:
                     constructor( )—保存着用于创建当前对象的函数
                     hasOwnProperty( )—检查该属性是否在当前对象实例中,是 返回 true;若在原型中则返回 false
                     isPropertyOf( )—检查传入的对象是否是另一个对象的原型
                     propertyIsEnumberable( )—检查给定的属性是否能够使用for-in语句来枚举
                     toString( )—对象转换为字符串表示
                     valueOf( )—对象转换为字符串、布尔值、数值表示
② Array类型—  例:var a = new Array();
                            a[0] = "123";
                            a[1] = "456";
                            alert(a.length); //打印出 2

特殊对象
function函数类型 —  可写成 var test = function(){}或 function test(){};
                             函数没有重载,总是指向最后定义的function;
                             内部特殊对象:arguments:  
                                                                   ① callee 对函数对象本身的引用,用于匿名函数的递归
                                                                   ② caller 只有在函数执行时才有定义,functionName.caller
                                                          this:   
                                                                   全局环境中this指向window
                                                                   事件处理函数中this指向绑定事件的节点
                                                                   构造函数中this指向被创建的对象
                                                                   call()  
                                                                   apply()   

判断JS中的数据类型
typeof、instanceof、constructor、prototype方法
 
① typeof:
             例 var a = 123;
                 var b = function(){
                   this.name = "Andy";
              }
                alert(typeof a);// number
                alert(typeof b); //function
                alert(typeof a == "number" );//true
                alert(typeof b == "boolean");//false
 
② instanceof
(判断已知对象类型的方法,instanceof 后面一定是对象类型,区分大小写):
                 例  alert(a instanceof Array);//false
                      alert(b instanceof Function );//true
 
③ constructor
(根据对象的constructor判断):
                例  alert(a.constructor === Array);//false
                     alert(b.condtructor === Function);//true
 
④ prototype :
                例     alert(Object.prototype.toString.call(a)==="[object Number]");//true
                        alert(Object.prototype.toString.call(b)==="[object String]");  //false
扩展: 原文链接 http://www.xiabingbao.com/javascript/2015/07/04/javascript-type/
typeof方法:
          ①numberstringbooleanfunction, undefined可以被正确检测出;
                 ②null,array,json,date,reg,error 全部被检测为 object类型;
                 ③typeof 区分不出 json和array类型,输出都是 object;
instanceof 方法:
                 ①array、function、json、date、reg、error可以检测为true;
                 ②number、string、boolean、undefined、null检测为false;
                 ③null 和 undefined 检测不成object或其他类型
                 因此,要用instanceof 方法,首先判断 是否为null和undefined类型。
constructor 方法:
                          除了null和undefined ,其他类型均能使用constructor判断
                          但被判断的array必须在当前页面声明,例如对应子页面的Array 用父页面来判断,会返回false。
prototype 方法:
                       Object.prototype.toString.call(变量) 可以检测出所有类型;
                       例如 Object.prototype.toString.call(date); //返回[object Date]

jquery中$.type的实现

检测出所有类型,和 Object.prototype.toString.call(date)方法很像,输出结果为prototype方法输出的第二个参数,即:

$.type(num);  //number

$.type(nul);  // null

转载于:https://www.cnblogs.com/emory/p/5008482.html

JavaScript学习笔记(一)—— 数据类型相关推荐

  1. JavaScript 学习笔记(1)

    1.     何为 Jscript JScript 是一种解释型的.基于对象的脚本语言. 局限性: 1)        不能使用该语言来编写独立运行的应用程序 2)        没有对读写文件的内置 ...

  2. JavaScript学习笔记01【基础——简介、基础语法、运算符、特殊语法、流程控制语句】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  3. JavaScript学习笔记(六)--数组

    数组初始化 我们都知道,数组是用于保存多个值的集合,在数组中,值被称为元素,值可以是任意的数据类型.在Javascript中,创建数组通常有两种方式:字面量和构造函数. 字面量 数组的元素可以是任意的 ...

  4. JavaScript学习笔记(三)--操作运算符

    JavaScript中的运算符有很多,主要分为算术运算符,比较运算符,逻辑运算符,三目运算符.一元运算符.位运算符等.这些运算符都有一些属于自己的运算规则,下面就为大家介绍一下JavaScript中的 ...

  5. JavaScript学习笔记:类型检测

    JavaScript学习笔记:类型检测 1.利用typeof检测数据类型 注意:type of null,返回的不是"null",而是"object".type ...

  6. JavaScript 学习笔记(第三天)

    JavaScript 学习笔记(第三天) 一.数组 1.1.数组的基础 1.2.数据类型分类 1.3.创建数组 1.3.1.字面量创建一个数组 1.3.2.内置构造函数创建数组 1.4.数组的基本操作 ...

  7. JavaScript 学习笔记(二)

    JavaScript 学习笔记(二) 文章目录 JavaScript 学习笔记(二) 一 JSON 1. JSON 对象 什么是JSON对象 JSON对象与Javascript对象的区别 在JavaS ...

  8. JavaScript学习笔记03-数组-Data对象-Math对象-包装类-字符串-正则

    目录 一.数组 索引 数组的特点 1.1.数组的创建 1.1.1.使用new关键字(构造函数) 1.1.2.使用字面量形式 1.1.3.创建数组的注意事项 1.2.数组的基本使用 1.2.1.存操作( ...

  9. JavaScript学习笔记(第二部分)总共四部分

    JavaScript学习笔记(第二部分)总共四部分 4 对象(Object) 字符串String.数值Number.布尔值Boolean.空值Null.未定义Undefined是基本的数据类型,这些数 ...

  10. JavaScript学习笔记(四)---闭包、递归、柯里化函数、继承、深浅拷贝、设计模式

    JavaScript学习笔记(四)---闭包.递归.柯里化函数.继承.深浅拷贝.设计模式 1. 匿名函数的使用场景 2.自运行 3.闭包 3.1前提: 3.2闭包 4.函数对象的三种定义方式 5.th ...

最新文章

  1. linux的文件压缩与解压缩,linux(文件压缩与解压缩)
  2. JDBC常见面试题集锦(一)
  3. go语言生成自定义uuid_竟然不用写代码!一款可视化 Web 管理后台生成工具
  4. mysql分库分表风险_数据库分库分表存在的问题及解决方案
  5. 三方协议,档案,工龄,保险,户口,
  6. Linux文件系统的目录结构详解
  7. 01.00 简单工厂模式
  8. codevs——1517 求一次函数解析式
  9. 力胜机器人_德男子两手臂尺寸悬殊 超粗右臂曾力胜掰手腕机器人
  10. 04年学计算机,成都电子科大计算机学院04年专业?
  11. Pygame实战之外星人入侵NO.7——大批外星人来袭
  12. mysql分组函数、组函数、聚合函数、统计函数
  13. LeetCode Daily challenge - K Closest Points to Origin
  14. 巨人纪学峰:未来网游发展趋势是社区化
  15. 基于单片机的升力检测仪系统设计
  16. python定时替换文件内容
  17. 数据结构c语言——树的三种存储结构(双亲表示法、孩子表示法、兄弟表示法)
  18. Kotlin 协程与架构组件一起使用及底层原理分析,音视频开发前景
  19. 互联网日报 | 蚂蚁集团确定IPO发行价;小米双11将拿出10亿补贴;特斯拉上海超级工厂启动整车出口...
  20. 机器人主要有哪几部分组成?

热门文章

  1. String StringBuilder StringBuffer三者之间的区别~~~
  2. oracle安装后开机很慢,Windows下安装Oracle拖慢开机速度的解决方法
  3. c#中connect函数_Flink算子使用方法及实例演示:union和connect
  4. 基于Java+SpringBoot+vue+element实现前后端分离牙科诊所管理系统详细设计
  5. 从java代码获取类名_java代码获取当前类类名、方法名
  6. php判断有没有登录,请问thinkphp 怎么在每个方法里面判断是否登录?
  7. android+自定义alertdialog,安卓自定义AlertDialog
  8. android slidingdrawer 方向,如何使Android SlidingDrawer从左侧滑出?
  9. php自动采集入库,Phpcms v9自动采集入库自动发布组件
  10. 分组后统计总数_大数据时代看排球:排球技术统计能告诉你什么?