关于JavaScript的“+”运算和“-”运算和三目操作符“?:”
2010-09-14 13:20:11 来源:WEB开发网开始:
我们先看一下“+”在JavaScript文档中的说明:
功能:将数字表达式的值加到另一数字表达式上,或连接两个字符串。
语法:result=expression1+expression2
参数:result 任何变量。
expression1任何表达式。
expression2任何表达式。
说明:
如果 那么
两个表达式都是数字或Boolean值 加
两个表达式都是字符串 连接
一个表达式是数字而另一个是字符串 连接
而下面再看“-”的定义:
功能:从一个表达式的值中减去另一个表达式的值,只有一个表达式时取其相反数。
语法1:result=number1-number2
语法2:-number
说明: 在语法1中,-运算符是算术减法运算符,用来获得两个数值之间的差。在语法2中,-运算符被用作一元取负运算符,用来指出一个表达式的负值。
对于语法2,和所有一元运算符一样,表达式按照下面的规则来求值:
如果应用于undefined或null表达式,则会产生一个运行时错误。
对象被转换为字符串。
如果可能,则字符串被转换为数值。如果不能,则会产生一个运行时错误。
Boolean值被当作数值(如果是false则为0,如果是true则为1)。
该运算符被用来产生数值。在语法2中,如果生成的数值不是零,则result与生成的数值颠倒符号后是相等的。如果生成的数值是零,则result是零。
这里我来做一个补充,“+”“-”通常作为算术运算符,也就是参见运算的都应该是数字表达式。而“+”同时还用于字符串的连接操作,因此对它们的运算特点可归纳如下:
对于含有“-”的运算,最后结果应该是数值,参与运算的2个表达式都将向数值转换,如果转换失败,则抛出运行时错误。
对于含有“+”的运算,一旦“+”两边其中的一个是字符串,那么认为是字符串连接,所有参与运算的表达式都向字符串转换,最终是一个连接好的字符串。
总结完上面的一些特性,下面我们看它们在实际中的巧用:
vart=parseInt('08');
我们需要转换一个字符串为整型时,上面的代码从逻辑上是正确的,但是结果却是错误的,其中的原理可以参考JavaScript文档,也可参见鸟食轩的另一篇文章《这么小心还是在"08"向8的转换上栽了》
这时我们可以使用“-”的特性,进行一次数值转换,代码如下:
vart2='08'-0;
这次我们得到了正确的值,同样的“+”也可以进行一些妙用,常用来自动进行数值到string的转换。
最后要提醒大家的是使用上面的规律时要注意表达式中运算的优先级,例如:
alert(1+2+'');
alert(1+''+2);
得到不同的结果"3"和"12"。
这里同时补充一个三目操作的运算表达式。与C#的三目运算相似,使用三目操作可以简化我们的代码,下面我们看下面两行代码:
<scripttype="text/javascript">
vardt=newDate();
month1=dt.getMonth()<10?'0':''+dt.getMonth();
month2=(dt.getMonth()<10?'0':'')+dt.getMonth();
alert(month1);
alert(month2);
</script>
这段代码是用来获取日期中月份的2位表示字符串,那么哪一种是正确的呢?这个问题留给诸位去思考。
小节:本文通过这几个典型错误的分析,说明了基础知识的重要性,希望大家以后在编写JavaScript代码的时候可以避免这样的低级错误。
Tags:关于 JavaScript 运算
编辑录入:爽爽 [复制链接] [打 印]赞助商链接