JavaScript中的数据类型

来源:互联网 发布:ubuntu gcc安装包下载 编辑:程序博客网 时间:2024/05/22 05:17

  JavaScript中的数据类型

JavaScript 不支持任何创建自定义类型的机制,所有值都成为以下数据类型之一。

JavaScript 中有 5 种不同的数据类型:

l string 字符串。最抽象的数据类型,信息传播的载体

l number  数值。最原始的数据类型,表达式计算的载体

l boolean  布尔值。最机械的数据类型,逻辑运算的载体

l function  函数

3 种对象类型:

l Object  对象

l Date    日期

l Array   数组

2 个不包含任何值的数据类型:

l null    空、无。表示不存在,当为对象的属性赋值为null,表示删除该属性

l undefined  未定义。当声明变量却没有赋值时会显示该值。可以为变量赋值为undefined

本章将主要介绍string number Boolean null undefined几种简单类型,而对于对象类型、数组类型和函数等在后面的章节单独介绍。

  Number类型

Number 类型包含两种数值:整型和浮点型。为了支持各种数值类型,Js定义了不同的数值字面量格式。

整型

最基本的数值字面量是十进制整数。

 var box = 100; //十进制整数

八进制数值字面量,(8 为基数),前导必须是0,八进制序列(0~7)

var box = 070; //八进制,56

var box = 079; //无效的八进制,自动解析为 79

var box = 08; //无效的八进制,自动解析为 8

十六进制字面量前面两位必须是 0x,后面是(0~9A~F)

var box = 0xA; //十六进制,10

var box = 0x1f; //十六进制,31

l  浮点类型

浮点类型,就是该数值中必须包含一个小数点,并且小数点后面必须至少有一位数字。

var box = 3.8;

var box = 0.8;

var box = .8; //有效,但不推荐此写法

由于保存浮点数值需要的内存空间比整型数值大两倍,因此 JS 会自动将可以转换为整型的浮点数值转成为整型。

var box = 8.; //小数点后面没有值,转换为 8

var box = 12.0; //小数点后面是 0,转成为12

对于那些过大或过小的数值,可以用科学技术法来表示(e 表示法)。用e表示该数值的前面10的指数次幂。

var box = 4.12e9; //4120000000  

var box = 0.00000000412; //4.12e-9

虽然浮点数值的最高精度是 17 位小数,但算术运算中可能会不精确。由于这个因素,做判断的时候一定要考虑到这个问题(比如使用整型判断)

alert(0.1+0.2); //0.30000000000000004

特殊的数值

正无穷大:Infinity  [ɪnˈfɪnəti]
例如:alert(5/0);

负无穷大:-Infinity

NaN:表示一个非数字的特殊值,与任何数值都不相等,与它自己也不相等。需要用函数isNaN( )来检测这个值。当算术运算产生了未定义的结果或错误时,就会产生该值。

例如:alert(parseInt("aa"));

 

使用Number对象的几个属性可以获得几个特殊的数值:

i. Number.MAX_VALUE  可以表示的最大数字

使用Number对象的MAX_VALUE可以获取当前的最大值,如下例:

<script type="text/javascript">

alert(Number.MAX_VALUE);

</script>

ii. Number.MIN_VALUE   可以表示的最小数字

iii. Number.NaN   特殊的非数字值

iv. Number.POSITIVE_INFINITY  表示正无穷大的特殊值 如,1/0

v. Number.NEGATIVE_INFINITY  表示负无穷大的特殊值

 

数字的使用:

+  -  *  /   %

Math对象中保存的函数,如Math.sin();  Math.sqrt();

 

  String 类型

1String类型用于表示由零或多个16Unicode字符组成的字符序列,即字符串。字符串可以由双引号(")或单引号(')表示。

2javascript中没有char类型,要表示单个字符,必须使用长度为1的字符串。

var box = 'Zhen';

var box = "Zhen";

3PS:在某些其他语言(PHP)中,单引号和双引号表示的字符串解析方式不同,而JS中,这两种表示方法没有任何区别。但要记住的是,必须成对出现,不能穿插使用,否则会出错。

var box = '王麻子"; //出错

 

4、由单引号定界的字符串可以含有双引号,由双引号定界的字符串可以含有单引号。

如:"大家好我叫'Kitty'"

 

5String类型包含了一些特殊的字符字面量,也叫转义序列。反斜杠是一个转义字符。 转义字符将特殊字符转换为字符串字符。

转义字符 (\) 可以用于转义撇号,换行,引号,等其他特殊字符。

下表中列举了在字符串中可以使用转义字符转义的特殊字符:

\0 NUL字符

 

6、字符串直接量必须写在一行中,如果将它们放在两行中,可能会将它们截断。如果必须在字符串直接量中添加一个换行符,可以使用字符序列\n。 如,"大家好我叫\n'Kitty'"

i. 说明该换行符可以用在消息提示框中

alert("hello\nzhangsan");

ii. 如果使用document.write( )语句输出时,换行符应该使用<br/>

document.write("hello<br/>zhangsan");

 

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

    var box = 'Mr.';

    box = box + ' Wang';

 

8、字符串的使用

a) 加号(+)运算符:将两个字符串连接起来,将第二个字符串附加到第一个之后。

b) 求字符串的长度:字符串.length

例如:

<script type="text/javascript">

var x=window.prompt("第一个数");

if(x.length==0)

{

document.write("操作数不能为空");

}

else

{

document.write(x.length);

}

</script>

c) 获取指定位置的字符:字符串.charAt(下标)

<script type="text/javascript">

var name="张小鹏";

document.write("您的姓氏是:"+name.charAt(0));

</script>

d) 求子串:字符串.substring(起始位置,终止位置);截出的子串中不包括结束位置的字符。 第2个参数可以省略。

<script type="text/javascript">

var name="张小鹏";

document.write("您的名是:"+name.substring(1));

</script>

e) 查找子串在字符串中的位置:字符串.indexOf('子串');

<script type="text/javascript">

var email=window.prompt("请输入邮箱:");

if(email.indexOf("@")==-1){

document.write("邮箱输入错误!");

}

else{

document.write("邮箱是:"+email);

}

</script>

f)  字符串和数组一样,都是以0开始索引的。

例子:

//javascript中定义变量使用:var变量名

var s="hello"+"world!"; //连接

alert(s.length+" "+s.charAt(4)+" "+s.substring(0,3)+" "+s.indexOf("world"));

 

 

 

  Boolean类型

Boolean 类型有两个值(字面量)truefalse。而true不一定等于1false不一定等于0

JavaScript 是区分大小写的,TrueFalse或者其他都不是Boolean类型的值。

var box = true;

 undefined类型

在使用var声明变量,但未对其加以初始化时,这个变量的类型就是undefined,且其默认初始化值为undefined

对未声明与初始化的变量,直接使用,那么这个变量的类型也是undefined,但是没有默认初始化值。

<script type="text/javascript">

var a;

document.write(typeof a,typeof b);

</script>

 

说明:上面的message变量和age变量还是有区别的。参见,下面的代码:

 

 

  null类型

null类型的默认值是null,从逻辑角度讲,是表示一个空对象指针。

Null 类型是一个只有一个值的数据类型,即特殊的值 null。它表示一个空对象引用(指针),而typeof操作符检测null会返回object。因此,null更像是object类型可取的一个值。

var box = null;

alert(typeof box);

如果定义的变量准备在将来用于保存对象,那么最好将该变量初始化为 null。这样,当检查null值就知道是否已经变量是否已经分配了对象引用了。

var box = null;

if (box != null) {

alert('box 对象已存在!');

}

有个要说明的是:undefined 是派生自 null 的,因此JS中规定对它们的相等性测试返回true

alert(undefined == null);

由于 undefined null 两个值的比较是相等的,所以,未初始化的变量和赋值为null的变量会相等。

 

例如:

 

 

undefined 表示未定义或定义了未赋值。而null表示给变量赋值了一个空引用,空指针,表示对不存在的对象的引用,因此null属于object类型。