数据和判定(二)------运算符
运算符
JavaScript有许多的运算符,你可以在你的程序中用来操作数据;你或许会从数学的角度认识它们。表 2-2 介绍了一些最常用的运算符。
表2-2。 JavaScript 运算符
运算符 |
它的用途 |
+ |
对两个数进行加法运算或者连接两个字符串。 |
- |
从第一个数中减去第二个数。 |
* |
对两个数进行乘法运算。 |
/ |
第一个数除以第二个数。 |
% |
获得除法的余数。举例来说,98 % 10 = 8。 |
-- |
数字递减1:只有在变量中有效,我们稍后会提到。 |
++ |
数字递增1:只有在变量中有效,我们稍后会提到。 |
下面是它们的应用:
<html>
<body>
<script type="text/javascript">
document.write( 1 - 1 );
document.write( "<br />" );
document.write( 1 + 1 );
document.write( "<br />" );
document.write( 2 * 2 );
document.write( "<br />" );
document.write( 12 / 2 );
document.write( "<br />" );
document.write( 1 + 2 * 3 );
document.write( "<br />" );
document.write( 98 % 10 );
</script>
</body>
</html>
你会获得如下的输出:
0
2
4
6
7
8
跟数学一样,JavaScript也定义了一些运算优先级。乘法比加法的优先级要高,所以这个计算1 + 2 * 3 会按如下的步骤执行:
2 * 3 = 6
6 + 1 = 7
所有的运算符都有一个优先级顺序。乘法、除法和求余的优先级相同,因此当它们出现在同一个等式中的时候,会按照从左到右的顺序执行。试着计算一下:
2 * 10 / 5%3
计算结果是1,因为计算的顺序是简单的从左到右来读的:
2 * 10 = 20
20 / 5 = 4
4%3 = 1
加法和减法同样也拥有相同的优先级。
你可以使用括号来给某部分计算一个更高的优先级。例如,你可以按照如下的方式,把1和1相加,然后乘以5:
(1 + 1) * 5
计算的结果会是10,但没有括号的话结果就会是6。实际上,使用括号是个非常好的主意,即使它们不是必需的时候,因为它们可以帮助我们使执行的顺序变得清晰。
如果你使用不止一对括号,JavaScript会简单的按照从左到右的顺序执行,或者你使用了内部括号,则按照从内到外的顺序执行:
document.write( ( 1 + 1 ) * 5 * ( 2 + 3 ) );
下面是这个计算的优先执行顺序:
(1 + 1) = 2
(2 + 3) = 5
2 * 5 = 10
10 * 5 = 50
正如我们看到的,JavaScript的加法运算符把这些值加到一起。它如何处理这两个值取决于你使用的数据类型,这个+运算符会把它们加到一起。 然而,如果你处理得数据其中有一个数据类型是字符串(使用分隔符来表示的),这两个值会被连接在一起。试一下这个:
<html>
<body>
<script type = "text/javascript">
document.write( 'Java' + 'Script' );
document.write( 1 + 1 );
document.write( 1 + '1' );
</script>
</body>
</html>
能够对字符串使用加法运算是非常方便的(这种情况下也叫连接运算符),但如果你处理的其中一个值正好与你期望的数据类型不同,它也会产生意想不到的结果。我们稍后会看一些这样的简单例子,并且分解他们。
如果你处理的文本(literal)值都如我们目前所使用的那样,那么它不会有什么大问题。可是,你在程序中需要处理的很多数据都是用户输入或者脚本产生的,因此我们没有办法预先准确的知道你将要处理的是什么值。这就是变量(variables)需要引入的地方。变量是你脚本中的数据占位符,它们对JavaScript来说非常重要。