newhappy的专栏

高级系统分析师,专注于对SOA,Ajax以及J2EE架构的研究,欢迎大家与我交流.Email:pleasechess@126.com

牛海彬ID:newhappy2008
[修改头像]
426263次访问,排名103好友10人,关注者8
吉林大学软件工程硕士;一汽启明CPDM项目组软件工程师;
newhappy2008的文章
原创 178 篇
翻译 24 篇
转载 97 篇
评论 225 篇
newhappy的公告
非常感谢CSDN提供了这么好的一个平台,过去的一年为生活而忙忙碌碌,博客更新的不多,在新的一年里,我会勤快一点,多学一些技术,多交一些技术上的朋友.
最近评论
fsy123456accp:setBinaryStream()应该是设置二进制的流函数
第一参数个是字段名的序号,第二个参数是文件流
,第三个参数是文件流的长度
wny78:Thanks for sharing your source code with us.
kezheng1234:很好
Jolestar:比较感兴趣windows server 2008的命令行模式。但不知道windows命令行了,其他软件怎么办?sqlserver能用命令行管理?谁用命令行管理过IIS?要修改一下注册表呢?有好的命令行下的编辑器么?windows下有几个软件支持命令行安装?windows的path路进能统一管理么?别让我装个软件,还要手动修改path路径,才能直接在命令行下运行。
windows的思……
JException:看不太懂啊
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes
文章分类
收藏
    相册
    友情连接
    114社区
    SOA-中间件
    张孝祥(RSS)
    杨洪波(RSS)
    沈东良
    许式伟(RSS)
    谭振林(RSS)
    银狐999(RSS)
    阿蒙专栏(RSS)
    存档

    翻译 JavaScript中的判定

    新一篇: oracle中like的优化

    2.1.    JavaScript中的判定

    判定赋予了程序智能。不使用它你就不能写出一个好的程序,不管你是创建游戏、校验密码、根据用户前面的做出的选择给予用户一组选择,还是一些其他的情况。

    判定是以条件语句为基础的,条件语句是一种值或真或假的简单语句。这就是基本数据类型中的布尔(Boolean)数据类型该应用的地方了。循环是进行判定的另一个重要工具,例如,可以使你从头到尾地循环用户的输入或循环一个数组,并对应的进行决策。

    2.1.1.         逻辑和比较运算符

    有两组主要的运算符,我们下面会学到:

    l        数据比较运算符:比较操作数并返回布尔(Boolean)值。

    l        逻辑运算符:对多于一种的情况的进行测试。

    我们会先看一下比较运算符。

    2.1.1.1. 数据比较

    2-3列出了一些最常用的比较运算符。

     

    2-3. JavaScript中的比较

    运算符

    描述

    例子

    ==

    检查左边和右边的操作数是否相等

    123 == 234 返回假值。

    123 == 123 返回真值。

    !=

    检查左边的操作数是否不等于右边的操作数

    123 != 123 返回假值。

    123 != 234 返回真值。

    > 

    检查左边的操作书是否大于右边的操作数

    123 > 234 返回假值。

    234 > 123 返回真值。

    >=

    检查左边的操作书是否大于或等于右边的操作数

    123 >= 234 返回假值。

    123 >= 123 返回真值。

    <

    检查左边的操作书是否小于右边的操作数

    234 < 123 返回假值。

    123 < 234 返回真值。

    <=

    检查左边的操作书是否小于或等于右边的操作数

    234 <= 123 返回假值。

    234 <= 234 返回真值。

     

                                                                                       

     

    n        警告:小心这个==相等运算符:它太容易了,以至于在一个脚本中常由于会被误用为赋值运算符:=,而产生许多错误。

                                                                                       

     

    这些运算符都使用于字符串数据类型和数值类型,并且是区分大小写的:

    <html>

    <body>

    <script type="text/javascript">

    document.write( "Apple" == "Apple" )

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

    document.write( "Apple" < "Banana" )

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

    document.write( "apple" < "Banana" )

    </script>

    </body>

    </html>

    下面是你会得到的结果:

                                                                                       

     

    true

    true

    false

                                                                                       

     

    当计算一个字符串比较的表达式时,JavaScript解释器会依次比较两个字符串中每个字符的ASCII每个字符串的第一个字符,然后是第二个字符,依次类推。大写的AASCII中表示65B 表示 66C表示 67,依次类推。 计算这个表达式"Apple" < "Banana",JavaScript解释器使用每个字符中的第一个字符的ASCII码来进行比较:65 < 66, 因此 A 排在前面,这个比较是真值。当检验这个表达式 "apple" < "Banana"的时候,JavaScript解释器做了同样的事情;然而,小写字母 a ASCII码是97,因此这个表达式"a" < "B"转变为97 < 66,它的值是假。你可以使用< <= > >= 运算符来进行字母顺序的比较。如果你需要确保所有的字母都是同样的大写或小写,你可以使用String对象的toUpperCase()toLowerCase()方法。比较运算符和数字运算符是一样的,都可以使用变量。如果我们想按字母顺序比较appleBanana ,我们可以这样做:

    <html>

    <body>

    <script type="text/javascript">

    var string1 = "apple";

    var string2 = "Banana";

    string1 = string1.toLowerCase( );

    string2 = string2.toLowerCase( );

    document.write( string1 < string2 )

    </script>

    </body>

    </html>

    可是在你使用等号运算符比较String对象的时候,有一些细节需要注意。试一下这个:

    <html>

    <body>

    <script type="text/javascript">

    var string1 = new String( "Apple" );

    var string2 = new String( "Apple" );

    document.write( string1 == string2 )

    </script>

    </body>

    </html>

    你会得到一个返回false值。事实上,我们在上面比较的是两个字符串对象,而不是两个基本类型的字符串包含的字符,返回的false结果业表明,即使两个字符串对象持有相同的字母,它们也不是同一个对象。

    如果你确实需要比较两个对象持有的字符串,那么你可以使用valueOf()方法来对数据值进行比较:

    <html>

    <body>

    <script type="text/javascript">

    var string1 = new String( "Apple" );

    var string2 = new String( "Apple" );

    document.write( string1.valueOf() == string2.valueOf() );

    </script>

    </body>

    </html>

    2.1.1.2. 逻辑运算符

    有时候你会需要把多个比较放到一个条件组中。你也许想检查用户输入的信息是否有意义,或者根据用户前面的回答,限制他们可以选择的数据项。你可以使用表2-4中的逻辑运算符来完成这样的功能。

    2-4 JavaScript中的逻辑运算符

    符号

    运算符

    说明

    例子

    &&

    And

    两个条件都必须为真。

    123 == 234 && 123 < 20 (false)

    123 == 234 && 123 == 123 (false)

    123 == 123 && 234 < 900 (true)

     

    ||

    Or

    其中一个或两个必须为真。

    123 == 234 || 123 < 20 (false)

    123 == 234 || 123 == 123 (true)

    123 == 123 || 234 < 900 (true)

     

    !

    Not

    逻辑取反。

    !(123 == 234) (true)

    !(123 == 123) (false)

     

    一旦求出了数据的值,我们需要能够根据这个输出结果进行判定选择。这正是条件语句和循环语句可以发挥作用的地方。你会发现这章中我们学习的运算符会经常被用到一个条件语句或循环语句中。

     

    2.1.2.  条件语句

    if...else 结构被用来测试条件,格式如下:

     

    if ( condition ) {

    // Execute code in here if condition is true

    } else {

    // Execute code in here if condition is false

    }

    // After if/else code execution resumes here

     

    如果这个条件测试为真,紧跟if后面的大括号中的代码就会被执行,但如果它不为真则不会执行。你也可以使用else语句,创建在if条件不被满足的情况下应该执行的代码块。

    我们来改进一下在这一章的前面建立的货币转换程序,创建一个循环来处理用户的非数值输入:

    <html>

    <body>

    <script type="text/javascript">

    var euroToDollarRate = 0.872;

    // Try to convert the input into a number

    var eurosToConvert = Number( prompt( "How many Euros

    do you wish to convert", "" ) );

    // If the user hasn't entered a number, then NaN

    // will be returned

    if ( isNaN( eurosToConvert ) ) {

    // Ask the user to enter a value in numerals

    document.write( "Please enter the number in numerals" );

    // If NaN is not returned, then we can use the input

    } else {

    // and do the conversion as before

    var dollars = eurosToConvert * euroToDollarRate;

    document.write( eurosToConvert + " euros is " +

    dollars + " dollars" );

    }

    </script>

    </body>

    </html>

     

    这个if语句使用了isNaN()函数,它会返回true,如果变量eurosToConvert中的值不是一个数字

                                                                                      

    n        注解:记住剂可能地使错误信息友好并且有用。良好的错误信息可以明了的告知用户他们该做什么,这样可以使他们更有耐心的使用程序。

                                                                                     

     

    我们使用逻辑运算符和嵌套的if语句,可以创建更夫杂的条件:

    <html>

    <body>

    <script type="text/javascript">

    // Ask the user for a number and try to convert the

    // input into a number

    var userNumber = Number( prompt( "Enter a number between

    1 and 10", "" ) );

    // If the value of userNumber is NaN, ask the user

    // to try again

    if ( isNaN( userNumber ) ) {

    document.write( "Please ensure a valid number is

    entered" );

    // If the value is a number but over 10, ask the

    //user to try again

    } else {

    if ( userNumber > 10 || userNumber < 1 ) {

    document.write( "The number you entered is not

    between 1 and 10" );

    // Otherwise the number is between 1 and 10 so

    // write to the page

    } else {

    document.write( "The number you entered was " + userNumber );

    }

    }

    </script>

    </body>

    </html>

    我们知道这个数只要是一个数字并且小于10就可以。

                                                                                      

     

    注解:注意这段代码的布局。我们对ifelse语句以及代码块使用了缩进,所以阅读和理解代码块是从哪里开始和结束的非常容易。使你的代码尽可能得简单明了是非常重要的。

                                                                                      

     

    试着阅读一下没有使用缩进和空格的这段代码:

    <html>

    <body>

    <script type="text/javascript">

    // Ask for a number using the prompt() function and try to make it a number

    var userNumber = Number(prompt("Enter a number between 1 and 10",""));

    // If the value of userNumber is NaN, ask the user to try again

    if (isNaN(userNumb