站长资讯网
最全最丰富的资讯网站

详细解析JavaScript中的六大基本数据类型

本篇文章给大家带来了JavaScript中关于六大基本数据类型的相关知识,希望对大家有帮助。

详细解析JavaScript中的六大基本数据类型

一、区分大小写

在JavaScript中,所有的一切(变量、函数和操作符)都区分大小写。这也就意味着,变量名test和变量名Test分别表示两个不同的变量。

二、标识符

所谓的表示标识符,就是指变量、函数名和操作符,或者函数的参数。标志符的格式规则如下:

1、第一个字符必须是一个字符、下划线(_)或者一个美元符号($);

2、其他的字符可以是字母、下划线、美元符号和数字;

按照惯例,JavaScript的标识符采用小驼峰书写格式,也就是打开一个字母小写,剩下的单词的首字母大写。例如:firstChirld、myCar;

当然,标识符采用小驼峰书写格式不是强制要求,但是可以便于我们理解代码,在书写时尽量用小驼峰书写格式,便于别人理解你的代码。

三、注释

JavaScript中的注释方法分为单行注释和多行注释:
单行注释:

//这是一个单行注释

多行注释:

/* *这是一个 *多行注释 */

四、语句

在JavaScript中,语句都是以一个分号结尾;如果省略分号,则由解释器去确定结尾。如下例所示:

var sum = a + b			//即使没有分号也是有效语句——不推荐 var diff = a - b;		//有效语句——推荐

五、变量

JavaScript中的变量类型是弱类型的,所谓弱类型就是可以用来保存任何类型的数据。换句话说,每个变量仅仅是一个用于保存值的占位符而已。
定义变量时用var关键字,后面跟变量名(即标识符)。如下所示:

var  message;

JavaScript也支持直接初始化变量,因此在定义变量的同时就可以设置变量的值。如下所示:

var message = "Hello world!";

有一点必须注意,即用var关键字定义的变量将成为定义该变量的作用域中的局部变量。也就是说,如果函数中使用var定义一个变量,那么这个变量在函数运行结束后就会被销毁。例如:

function test(){ 	var message = "Hello";		//局部变量 } test(); console.log(message);		//错误!

出现错误的原因是,变量message是在函数test()中使用var定义的。当函数被调用时,就会创建变量并为其赋值。而在此之后,这个变量会立即销毁,因此,例子中的下一行代码就会导致错误。不过,可以像下面这样省略关键字var,从而创建一个全局变量:

function  test(){ 	message = "Hello";			//全局变量 } test(); console.log(message);			//"Hello"

在这里省略了关键字var,message就变成了全局变量。这样,只要调用一次test()函数,这个变量就被定义了,全局变量被定以后,就可以在函数外部的任何地方都可以被访问到。
虽然省略关键字var可以定义全局变量,但是不建议这样做,因为在局部作用域中定义的全局变量很难维护;

数据类型

JavaScript中有几种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String。还要一种复杂类型——Object,Object本质是一组无序的名值对组成。JavaScript中不支持任何创建自定义的类型的机制,而所有值都是这6种数据类型之一。

typeof操作符

由于JavaScript是弱类型的,因此需要有一种手段来检测给定变量的数据类型——typeof就是一个负责检测给定变量的数据类型的操作符。对一个值使用typeof操作符可能返回下列某个字符串:

  • “undefined”——如果这个值未定义;

  • “boolean”——如果这个值是布尔类型;

  • “string”——如果这个值是字符串;

  • “number”——如果这个值是数字;

  • “object”——如果这个值是对象或null;

  • “function”——如果这个值是函数;

下面是使用typeof操作符的几个例子:

var message = "hello"; console.log(typeof message);			//"string" console.log(typeof(message));			//"string" console.log(typeof 95);					//"number"

typeof操作符的操作数可以是变量,也可以是数值字面量。注意,typeof不是函数,因此此例中的圆括号尽管可以使用,但是不是必需的。
在JavaScript中,函数是一种对象,不是一种数据类型,因此使用typeof来区分函数和其他对象是必要的。

Undefined类型

undefined类型只有一个值,即特殊的undefined。在使用var声明变量但对其未加以初始化时,这个变量的值就是undefined。例如:

var message; console.log(message  == undefined);		//true var message1 = "undefined"; console.log(message1 == undefined);			//true

然而,令人困惑的一点是:对未初始化的变量执行typeof操作符会返回undefined值,而对未声明的比变量执行typeof操作符同样也会返回undefined值。来看下面的例子:

var message;			//这个变量声明之后默认取得了undefined值 //下面这个变量并没有声明 //var age; console.log(typeof message);		//"undefined" console.log(typeof age);			//"undefined"

为初始化的变量和为声明的变量都返回了undefined,这个结果有其逻辑上的合理性。因为这两种变量从技术角度上有本质的区别,但实际上无论对那种变量也不可能执行真正的操作,

Null类型

Null类型是第二个只有一个值得类型,这个特殊的值是null。从逻辑的角度来看,null值表示一个对象的空指针,而这也正是使用typeof操作符的检测null值时会返回“object”的原因,如下面的例子所示:

var message= null;		 console.log(message);		//"object"

如果定义的对象将来用来保存对象,那么最好将这个变量初始化为null而不是其他的值。这样一来,只要直接检查null值就可以直接知道相应的变量是否已经保存了一个对象的引用,如下面的例子:

if(message != null){ 	//对message进行一系列的操作 }

实际上,undefined的值是派生自null值得,所以对它们进行相等性测试的时候要返回true:

console.log(null == undefined);		//true

在这里,位于null和undefined之间的相等操作符(==)总是返回true。尽管null和undefined有这样的关系,但它们的的用途完全不同。如上面所述,无论在什么情况下,都没有必要把一个变量显示的表示为undefined,可是同样的规则对null却不适用。换句话说,只有保存对象的变量还没有真正的保存对象,就应该在明确地表示将该变量保存为null值。这样做不仅可以体现null值作为空指针的惯例,而且也有助于进一步的区分null和undefined。

Boolean类型

Boolean类型是JavaScript中使用最多的一种类型,该类型只有两个字面值:true和false。这两个值与数字值不是一回事,因此true不一定等于1,而false也不一定等于0。以下是为变量赋值的例子:

var first = true; var second = false;

需要注意的是,boolean类型的两个值区分大小写。也就是说True和true、False和false不是一回事。
True和False(以及其他混合大小形式)只是标识符,不是boolean值。
虽然boolean值只有两个值,但是JavaScript所有类型的值都有与这两个boolean值等价的值。要将一个值转换为相应的Boolean值,可以调用Boolean()函数。例如:

	var message = "Hello world!"; 	var messageAsBoolean = Boolean(message); 	console.log(messageAsBoolean);		//true

可以对任何类型的值调用Boolean()函数,而且总会返回一个boolean值。至于返回的是true还是false取决于要转换的实际类型及其实际值。下表给出了各种数据类型对其转换的相应规则:

数据类型 转换为true的值 转换为false的值
Boolean true false
String 任何非空字符串 “”(空字符串)
Number 任何非零数字值(包括无穷大) 0和NaN
Object 任何对象 null
Undefined n/a undefined

Number类型

在JavaScript中number类型定义了不同的数值字面量格式。例如:

	var  intNumber = 55;		//十进制整数 	var octalNum1 = 070;		//八进制的56 	var octaNum2 = 079;			//无效的八进制数,解析为79 	var octaNum3 =  08;			//无效的八进制数,解析为8 	var hexNum1 = 0xA;			//十六进制的10 	var hexNum2 = 0x1f;			//十六进制的31

在进行算术计算时,所有八进制和十六进制表示的数值都会转换成十进制数值。

NaN

NaN即非数值,是一个特殊的数值。这个数用于表示一个本来要返回数值的操作数未返回数值的情况(这样就不会抛出错误了)。NaN本身有两个特点:
首先,任何涉及NaN的操作(例如NaN/10)都会返回NaN,这个特点在多步计算中有可能导致问题。
其次,NaN与任何值都不相等,包括NaN本身。例如:

console.log(NaN ==NaN );		//false

String类型

string类型用于表示零或多个Unicode字符组成的字符序列,即字符串。字符串可以由双引号(")或单引号(’)表示,因此下面两种写法都是有效的:

var firstName = "王文正"; var secondName = "王彬";

双引号开头的必须以双引号结尾,而当引号开头的必须以单引号结尾。下面这种会导致语法错误:

var name = "王彬';		//语法错误
字符字面量

String类型中包含了一些特殊字面量,也叫转义序列,用于表示非打印字符,或者有其他的用途的字符。这些字符字面量如下表所示:

字面量 含义
n 换行
t 制表
b 退格
r 回车
f 进纸
斜杠
单引号
" 双引号
xnn 以十六进制代码nn表示一个字符
unnn 以十六进制代码nnn表示一个Unicode字符
字符串的特点

JavaScript中的字符串是不可变的,也就是说,字符串一旦创建,它的值就是不可更改的。要更改某个变量中保存的字符串,首先要销毁原来的字符串,然后用另一个包含新值得字符串填充变量,例如:

var lang = "java"; lang = lang + "script"; console.log(lang);		//javascript

Object类型

JavaScript中的对象是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型名称来创建。而创建Object类型的实例并为其添加属性或方法,就可以创建自定义对象。如下所示:

var o = new Object(); var  o = new Object;		//有效,但是不推荐这种做法;
Object的每个实例都具有以下下列属性和方法:
  • constructor:保存着用于创建当期那对象的函数。

  • hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是实际的原型中)是否存在。

  • isPrototypeOf(object):用于检查传入的对象那个是否是当前对象的原型。

  • propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句

  • toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应

  • valueOf():返回对象的字符串、数值或布尔值表示。通常与toString()方法的返回值相同

  • toString():返回对象的字符串表示

  • 由于在JavaScript中Object是所有对象的基础,因此所有对象都具有这些基本的属性和方法。

赞(0)
分享到: 更多 (0)
网站地图   沪ICP备18035694号-2    沪公网安备31011702889846号