天天看点

数据和判定(一)

数据和判定是所有“智能”程序的基础。在这章的开始,我们先看一下JavaScript是如何理解、或表示数据的。这个很重要,因为JavaScript包含许多数据类型(data types),而且根据它的数据类型来操作数据。错误的使用不同的数据类型会导致意想不到的结果。我们来看一些常见的数据类型问题,你会明白如何把数据的类型转化成其他的。

我们也会学习条件语句(conditional statements)和循环(loops):两种最有价值的判定工具。为了在计算机语言中进行判定,我们需要让程序知道响应特定的情况应该发生什么,这就需要条件语句来解决。另一方面,循环允许你简单的重复某一动作直到特定的条件被满足。举例来说,你可能需要循环表单里的每个输入以检查它包含的信息是否合法。

我会在这章中从如下许多方面阐述JavaScript:

l        在JavaScript中进行分类和操作:数据类型和数据运算符

l        变量

l        数据类型转换

l        数据对象简介:String、Date和Math对象

l        数组:保存有顺序的数据集合,例如一个购物车中的商品

l        使用条件语句、循环和赋值进行判定

n        注解:这一章中的例子会尽可能的保持简单,因此我们使用document.write()作为一种反馈机制,可以让你方便看到结果。你会在以后的章节中,你会学到其它更流行和通用的方法。

2.1.    数据、数据类型和数据运算符

数据时用来保存信息的。为了更有效的保存数据,JavaScript需要为每个数据分配一个类型(type)。这个类型规定了使用这个数据能来什么或不能干什么。举个例子,JavaScript中有一种数据类型是数值(number),它允许对它拥有的数据进行一些计算。

在JavaScript中用来保存数据的三种基本类型是:

l        字符串(String):一连串的字符,如“some characters”。

l        数值(Number):一个数字,包括浮点数。

l        布尔值(Boolean):包含一个真值(true)或假值(false)。

有时候也被称作基本(primitive)数据类型,因为它们只保存单个值。

还有两个不同的基本数据类型。它们不保存信息,用来对特定的情况给出我们警告:

l        空值(Null):表示没有数据。

l        未定义(Undefined):表示没有定义并赋给其值。 当你处理变量的时候,这个非常重要。

在这一章中我们会大量的使用这些数据类型。

2.1.1.         字符串数据类型

JavaScript解释器要求字符串数据被单引号或双引号括起来(大家都知道的分隔符)。举个例子,这个脚本中,会往页面中写入some characters:

<html>

<body>

<script type="text/javascript">

document.write( "some characters" );

</script>

</body>

</html>

引号不会被写到页面上因为它们不是字符串的一部分;它们只是简单的告诉JavaScript字符串的开始和结束的地方。我们使用单引号也可以轻松的做到:

document.write( 'some characters' );

    两种方法都可以,只要你使用与其打开字符串相同的方法关闭这个字符串,不要试图把它像以下的方式分割开:

document.write( 'some characters" );

document.write( "some characters' );

当然,你可能需要在字符串本身中使用单引号或者双引号,这种情况下你需要使用一个不同的分隔符。如果你使用双引号来标记,这个指令会按你意愿被解释成:

document.write( "Paul's characters " );

但如果你使用单引号来进行标记,它们不会解释成:

document.write( 'Paul's characters' );

这样做会给你一个语法错误,因为JavaScript解释器以为这个字符串在Panl中的l后结束了,它不明白后面要发生什么。

n        注解:JavaScript语法和英语的语法类似,是使语言“可理解”的规则集合。就像英语中一个语法错误会使一个句子显得没有意义,JavaScript中的一个语法错误也会使这个指令没有意义。

你可以使用单引号标志来分隔包含双引号的字符串或者相反:

document.write( "Paul's numbers are 123" );

document.write( 'some "characters"' );

另一方面,如果你想在你的字符串中既包含单引号,也包含双引号,你需要使用转义序列。 实际上,使用转义序列来代替我们使用的引号是一个好的变成习惯。因为它们使你的代码更加易懂。

2.1.1.1.      转义序列

转义序列在你想使用键盘不能打印的字符使得情况下也是有用的。(像日元符,¥, 在西方的键盘中)。

表2-1列出了一些最常用的转义序列

表2-1。常用的转义序列

转义序列

字符表示的意思

/b

撤销。

/f

换页。

/n

换行。

/r

回车符。

/t

制表符。

/'

单引号。

/"

双引号。

//

反斜线。

/xNN

NN 是一个十六进制的数,表示拉丁字符集中的一个字符(拉丁字符集是说英语国家的规范)。

/uDDDD

DDDD 是一个十六进制的数,表示一个Unicode字符。

我们来改进一下这个会引起语法错误的字符串:

使用这个转义序列 (/') 就可以被正确的解释了:

document.write( 'Paul/'s characters' );

这个转义序列告诉JavaScript解释器,这个单引号属于字符串本身,而不是一个分隔符。

ASCII是一个字符编码方法,它使用0-254的值。作为一种选择,我们可以使用十六进制/xNN 转义序列.表示的ASCII值来指定一个字符。这个字符C在十进制中是67,在十六进制中是43,因此我们可以像这样使用转义序列来往页面中进行写入它:

document.write( "/x43" );

这个转义序列 /uDDDD 和它的工作原理大致相同,但它是用Unicode字符编码方法。Unicode字符编码方法拥有65535个字符。 在前面的一二百个ASCII编码和Unicode编码中字符集是相似的,你往页面中写入字符C可以使用如下的方式:

document.write( '/u0043' );

继续阅读