在总结javaScript的数据类型之前,我们需要知道一些javaScript的常识,当然这跟数据类型的理解并没有什么鸟关系,我只是不想为了这么点东西而单开一篇,当然如果以后有机会的话也可以详细学习和总结,至少目前知道也够用就好。
javaScript的一些特点和约定:
1、javaScript区分大小写。
2、变量、函数、属性、参数的名字第一个字符必须是一个字母、下划线(_)或者美元符号($)。其他字符可以是字母、下划线、数字或美元符号。
3、javaScript标识符采用驼峰大小写格式,也就是第一个字母小写,剩下的每个单词的首字母大写,如:javaScript。
4、在代码顶部添加"use strict"启用严格模式,如果是在某函数内部的第一条添加,则只本函数启用严格模式。
5、语句用;结束,如果不添加;,解释器会自动判断并添加;
6、{}表示“块”。
7、关键字和保留字不能用于标识符,具体有哪些google吧。
8、var进行变量定义,在函数内部不加var进行变量定义,则变量为全局变量。
下面进入正题,说说javaScript的数据类型。
数据类型是每个编程语言都具有的知识,而javaScript不同于其他的语言就是,初学者会感觉它的数据类型简单又复杂。简单是因为它的基本数据类型简单,比如数值型就一种,不区分整数、浮点数、而且数据类型的转换很自如,js会根据情况自动进行转换,甚至基本数据类型还有方法可用,像一个对象一样,好神奇。。。。。。但是~~~~~~~~~~,复杂也是复杂在这种松散的数据类型变换太随意,感觉不好掌控,当然这一点也局部体现了javaScript的灵活性。
初次接触这门语言的时候,会在数据类型、函数、对象以及面向对象上感觉混乱,而我们之所以有这种感觉,是因为我们没有理解其中的真相,等我们理解了其中的真相,就犹如拨云见日,再也不会迷惑了,而灵活的掌握此项知识,对程序的掌控性会比别的语言更加灵活。我也是前后摸索了很久,现在总结在这:
-
javaScript的数据类型
javaScript的数据类型如果让我来分类的话,我认为刚开始理解的时候,可以分为三类:基本数据类型、引用数据类型、原始封装类型。后期就变成了两种:基本数据类型和引用数据类型。他们之间的区别和联系是什么,慢慢看。
基本数据类型只有五种:number、string、boolean、undefined、null。
引用数据类型有一种:Object。
原始封装类型:Number、String、Boolean。
-
基本数据类型:
基本数据类型的理解我们很简单,就是在js的世界里有5种基本数据类型,什么叫基本数据类型,就是组成javaScript元素的最基本的细胞,它不会再包含其他的东西了,最基本的了,它不会有任何的属性和方法(但是实际上确实可以调用到方法,但是这不是基本数据类型的错,是javaScript为了方便,进行了暗地的操作!)。
- undefined:只有一个值,就是undefined,表示未经初始化的变量。
- null:只有一个值,就是null,表示一个空指针对象。
- boolean:有两个值,分别是true、false。
- number:包含整数和浮点数。
- string:字符串类型。由0或多个16位Unicode字符组成的字符序列。
如何判断一个变量是哪种基本数据类型?javaScript为我们提供了typeof操作符(注意不是函数,是一个操作符)。它会返回一个变量的基本数据类型。
var a = 123;
var b = "123";
var c = true;
var d = 123.4;
var e = null;
var f = undefined;
console.log( typeof a ); // number类型
console.log( typeof b ); // string类型
console.log( typeof c ); // boolean类型
console.log( typeof d ); // number类型
console.log( typeof e ); // object类型(引用类型),注意此处,按理说应该返回null啊,为什么是object,object又是什么,这里你可以理解成这是一个js的bug。。。object后续介绍
console.log( typeof f ); // undefined类型
-
引用数据类型:
object类型
|
|——内建类型:Object、Array、Date、Error、Function、RegExp。
|——原始封装类型:Number、String、Boolean。
上边的标题缩进规则实际上表明了引用类型的结构(注意上边的object和Object表示的意义是不一样的,object是一种定义而Object是实实在在的一个东西),实际上引用数据类型只有一种,那就是object类型。
当然具体应用起来,你是找不到object(注意o是小写的)的,只能找到javaScript内建的引用类型或者原始封装类型。就像object只是一种定义,除了typeof的时候可以看到这几个字母,其他的时候看不到这个字母。举个例子,比如“人”这个数据类型,只是一种定义,你实际上找不到人,只能找到男人和女人。但是typeof的时候会告诉你,他是人。
内建数据类型和原始封装类型是object的实际表现方式,也就是javaScript对象类型。可以通过new操作符来实例化对象。
var a = new Function("asdf","return ;");
console.log( a ); // function(asdf) {return ;}
var b = new Number(123);
console.log( b );
var c = new Object();
console.log( c );
console.log( typeof a ); // function
console.log( typeof b ); // object
console.log( typeof c ); // object
javaScript提供了这么多内建数据类型是为了更加的方便(实际上所谓的内建类型和原始封装类型,是一组构造函数,我们可以通过new来实例化对象)。
比如数组类型是必要的,Date类型,都有特定的用途,很好理解,但是原始封装类型是干什么用的呢?我们上边说基本数据类型也有方法,就是通过它来实现的。javaScript为了使表现一致,"123".length的方式是允许的,但是实际上这样的操作javaScript隐藏了内部的细节,内部细节就是通过原始封装类型来进行了参与,具体看一个例子。
var a = "123";
var b = a.length;
console.log( b ); // 3
// 分解为如下:
var a = "123";
var temp = new String( "123" );
var b = temp.length
temp = null;
console.log( b );
由此可以看出,基本数据类型是没有方法的,它之所以能使用方法是javaScript自动的通过原始封装类型进行了模拟,并且此过程不在外部表现出来。
总结:
- javascript有两种数据类型:基本数据类型和引用数据类型。
- 引用数据类型又称为object类型,或者对象类型。
- javaScript默认有Object、Array、Date、Function、RegExp、Error、Number、String、Boolean这几个(内部)构造函数,通过这几个构造函数创建出来的对象也是object对象,它的类型是object类型。