正 文

JavaScript学习从入门到精通


www.7dspace.com  更新日期:2005-8-16 3:13:06  七度空间


第五天 JS表达式
--------------------------------
  在一个程序中,我们如果不给其中的变量赋值的话,那这个变量也就没有了存在的意义,而给变量赋值的核心部分就是表达式.今天我们就来讨论一下如何建立JS的表达式.

  我们先看个例子setup_logo="H.S WORKSHOP",我们给变量setup_logo赋予一个H.S WORKSHOP的值,而H.S WORKSHOP就是一个表达式.就是这么简单,你可以把表达式看成一个类似函数功能代码的东西,区别在于我们只需要一条语句而已.现在我们就从最常见的数字表达式开始,一步步的了解怎么去建立JS的表达式.

  那么什么是数字表达式呢?简单的说我们就是把如1+1=这样的计算过程,用程序语言来使计算机得出结果.数字表达式主要是由数字和计算符构成,而我们的重点就在计算符的运用.JS包含的计算符包括+,-,*,/,%,++,--,我们首先来看加号(+)的运用.我们就从1+1开始看看加号的用法,下面是同过JS得到结果的代码:

<script language="javascript" type="text/javascript">
<!--
var No=1
No=No+1
alert(No)
//-->
</script>

  之前我们也举过了类似的例子,我们知道No的原始值为1,我们使这个变量等于原始值加1,这样就可以得到结果.如果你还不够明确的话,我们再通过一个例子来说明.
<script language="javascript" type="text/javascript">
<!--
var No1=eval(prompt("输入第一个数字",0))
var No2=eval(prompt("输入第二个数字",0))
var jie_guo=No1+No2
alert(jie_guo)
//-->
</script>
  通过这个例子,我们可以得到任意两个数字的和,这里也引出我为什么要把加号与减,乘,除分开来讲的理由,因为在平时的运用中,加号同样可以运用于字符的连接,而prompt()返回的是一个字符串,在其他的计算符里,JS可以自动把字符串转换成数字,所以我们要用eval()来把字符串转换成数字,这些都是后话,在这里我们要知道的就是加号与其他计算符的区别.

  减(-),乘(*),除(/)和加号运用的方式基本相同,只是遵循从左到右的计算原则.下面我就这三个符号比较特殊的一些地方说明一下.
  减号大家需要与负号区分开来,虽然两者都是用"-"这个符号来标识,但意义绝对是不同的,也就是说-No=No*-1.
在除号上我们要避免除数等于O,我们可以用if()来判断,这也是后话了,在这里只是针对性的提醒一下.

  取模符(%)
  简单的说也就是当我们用一个数除上另一个数,再取它的余数,比如我们用16除以5,得到一个余数为1,这个值就是他显示的结果.

  递增符(++)递减符(--)
  为了避免表达式太长,我们可以使用些简化的运算符,象我们现在要说的递增递减符.以1+1,1-1为例,我们可以把上面的例子简写成:

<script language="javascript" type="text/javascript">
<!--
var No=1
No=No++
alert(No)
//-->
</script>
<script language="javascript" type="text/javascript">
<!--
var No=1
No=No--
alert(No)
//-->
</script>

  使用一个变量的时候我们不需要考虑递增(减)符的位置,也就是说我们也可以把上面的例子写成++No,--No
但当有两个相互关联的变量存在的时候我们就需要注意一个位置的问题.例如:
No1=No2
No2=No2+1
  我们设No2为1的话,显示No1,那么显示的结果就会是1,而不是我们期待的2.这段语句等价与No1=No2++,如果我们想得到结果为2的话,我们就必须写成No1=++No2,既:
No2=No2+1
No1=No2
  这是JS的一个细微的差别,希望大家要注意.递减符的应用相同.

  根据上面的思路,我们发现还可以把计算过程写得更简单一些,我这里就加号来举个例子,大家可以通过这个例子举一反三.我们假设No1=No1+No2,我们看到了两个重复的No1实际操作中,你可能会取上个一更长的变量名,这时候我们就可以把它简化一下,也就是说我把右边的No1去掉,把加号放到等号的左边来No1+=No2发现这个式子同样是成立的.通过这个例子我们还可以把减乘除取模的过程也简化了.

  建立字符串表达式
  同过上面我们了解了数字表达式,实际操作中我们或多或少的都必须对数字做出解释,这就涉及到字符串表达式了.事实上在前面我们已经运用了很多次了,如"现在的时间是" + ":" + current_time,这就形成了一个字符串表达式,但这里的加号与数字表达式的加号是不同的,在这里,2+"2"的结果不会是4,而是22,可以说这里的加号充当的是一个不被显示出来的连接符.

  建立比较表达式
  在将来的编程过程中,我们经常会碰到要求对比两个值,以使计算机来判断下一步该怎么做,就好比我们在前面不想用户输入的除数等于0,那我们就需要用到建立一个比较表达式来告知电脑,当用户输入0的时候,就应该退出计算过程.比较符包括有==,!=,>,<,>=,<=,===,!==
现在我们就来一一介绍.

等于符(==)
也就是说当两边的值相等的时候,我们就返回true,当不相等的时候,我们就返回false.
<script language="javascript" type="text/javascript">
<!--
var No1=prompt("第一个数",0)
var No2=prompt("第二个数",0)
var jie_guo=No1==No2
alert(jie_guo)
//-->
</script>

  通过这个例子我们可以直观的看出等于符的返回结果.

  同样的不等于(!=),大于(> ), 小于(< ),大于等于(>=),小于等于(<=)都是用来确定返回值是true还是false,就象初中数学里说的判断命题真假一个道理,只不过我们是要计算机来判断.

  通过这个例子我们可以知道到同一种数据类型之间如何进行比较,那么在数字和字符之间,或者数字与boolean之间,boolean与字符之间又如何比较呢?JS会先把操作值都转换成数字在进行比较,如"5"==5,true==1,false=="0"

  我们需要注意的是数字字符和数字进行比较得到的结果才可能是true,5和five比较永远都只是false,而boolean的两个值会分别转换成0和1,即true=1,false=0.

  当然有时候我们不想进行转换,而要求两者对比,我们就可以用上===和!==,这是恒等于和恒不等于,也就是说在用恒等于的情况下,"5"和5是绝对不可能返回true的,而用恒不等于时"5"和5对比才返回true.

  那么我们如何对比字符串呢?我们只需要遵循空格>符号>大写字母>小写字母的次序就可以了,而字母的排序就是按照字母表来的,即A>B>...>Z.

  了解了比较操作符,我们就可以使用一个比较使用的项目,条件操作符.也就是我们所说的根据条件返回两个不同的结果.条件操作符书写的格式如下:
  比较表达式?返回的真值:返回的假值

  这样或许太笼统了,我们就同过一个例子来看看其应用.

  现在我们要求查询那一年是不是闰年,首先我们需要知道如何计算闰年,可以被4整除,又不能被100整除(除非又可以被400整除)的那一年我们就成为闰年.那么我们可以建立以下这个方案.从0点开始,当可以被4整除的话加一点,被100整除的时候减一点,被400整除的时候我们再加一点,当结果等于1的时候这一年就闰年.程序如下:
<script language="javascript" type="text/javascript">
<!--
var nian_fen=0
var check_year=prompt("请输入你想知道的年份",2003)
var check4=check_year%4==0?1:0
var check100=check_year%100==0?-1:0
var check400=check_year%400==0?1:0
nian_fen=check4+check100+check400
var xian_shi=nian_fen==1?"是闰年":"不是闰年"
alert(check_year+xian_shi)
-->
</script>

  根据思路我们写出以上这段程序,其中的内容在前面我们也详细的讲了,大家可以仔细的体会其中的意思,这里我只把条件符提出来看看,如:nian_fen==1?"是闰年":"不是闰年"当nian_fen和1比较是相等的话,那就自动反会第一个值,即真值(是闰年),否则返回到第二个值,即假值(不是闰年).

  通过前面的介绍我们可以建立一级判断了,当我们要进行二级判断,例如当我们要知道两个比较表达式是否都为true,然后再决定下面的步骤的时候呢?这时候我们就需要用逻辑表达式来说明问题.

逻辑操作符有三种&&,  ,!

&&
相信学过英语的都知道&是and(和)的简写,在这里的意思也是一样的,也就是当两个boolean值都为true的时候,它显示的值就是ture,否则就是false.

  
这里我们用这个来表示or(或者)的意思,也就是当两个boolean值中有只要有一个值为true,那么结果就是true,否则就是false.

!
否定操作符,也就是当boolean值为true结果就为false,反之亦然.
这里我们需要走出一个思维误区,当两个值都等于false的时候并不是说逻辑输出值就会是true.

  最后我们来说说计算的优先权,事实上这个部分就跟我们平时的运算法则一样,从左到右,先乘除后加减,有括号先算括号里的.为了你可以更只管的了解,我们通过下面的表来说明.

符号 含义 优先次序 计算次序
+ + 递增 1 从右到左
- - 递减 1 从右到左
- 负号 1 从右到左
! 否定 1 从右到左
*,/,% 乘,除,取模 2 从左到右
+,- 加,减 3 从左到右
+ 连接 3 从左到右
<,< = 小于,小于等于 4 从左到右
>,> = 大于,大于等于 4 从左到右
= = 等于 5 从左到右
! = 不等于 5 从左到右
= = = 恒等于 5 从左到右
! = 恒不等于 5 从左到右
& & AND 6 从左到右
   OR 6 从左到右
?: 条件 7 从右到左
= 赋值 8 从右到左
+ =,- =等 算数赋值 8 从右到左
9页,当前在第5页  1  2  3  4  5  6  7  8  9  

上一篇:Meta:HTML设计中的大作用
下一篇:制作主页的五十个秘诀
作者:24CG  来源:eNet网络学院 ( 责任编辑:7dspace )
收藏此页】【打印】【关闭
站 内 搜 索
 

热 点 导 读
特 别 推 荐