zoukankan      html  css  js  c++  java
  • javascript权威指南,第六章,语句

    javascript语句是发给浏览器的命令。javascript语句的作用是告诉浏览器做什么。

    6.1表达式和语句

    JavaScript中的表达式和语句是有区别的.

    一个表达式会产生一个值,它可以放在任何需要一个值的地方,比如,作为一个函数调用的参数.下面的每行代码都是一个表达式:

    myvar
    3 + x
    myfunc("a", "b")

    语句可以理解成一个行为.循环语句和if语句就是典型的语句.

    一个程序是由一系列语句组成的.JavaScript中某些需要语句的地方,你可以使用一个 表达式来代替.这样的语句称之为表达式语句.

    但反过来不可以:你不能在一个需要表达式的地方放一个语句.比如,一个if语句不能作为一个函数的参数.

    6.2复合语句

    用大括号括起来的一组javascript语句,就是复合语句;

    例如

    if( condition ) {
      //...
    }else {
      //...
    }
    for() {
      //...
    }

    6.3 if 语句

    只有当指定条件为 true 时或者能转化为true时,该语句才会执行代码。当指定条件为false时或者能转化为false时,该语句不会执行代码。

    语句格式

    if(expression){
      statement
    }

    if语句的第二种形式引入了else从句。

    语句格式

    if(expression){
      statement1
    }else{
      statement2
    }
    当expression的值为false时,就执行else从句
    当程序中有多个if时,要注意确保else从句匹配了正确的if语句。
    i=j=1;
    k=2;
    if(i == j)
      if(j == k)
      document.write("i equals k;");
    else
        document.write("i doesn't equals j;");
    
    
    在这个例子中,内层的if语句构成了外层if语句的所需要的子语句,但是if和else如何普配就很混乱。
    else的匹配规则:else总是与它距离最近的尚未配对的if配对
    else语句与第二个if语句匹配
    6.4 else if语句
    语句格式
    if(expression1){
      statement1
    }else if(expression2){
      statement2
    }
    
    
    
    
    当expression1为false时,则会执行else if语句,当expression2为true,执行statement2,否则不执行。
    6.5 switch case语句
    switch case语句用于处理多分支结构的条件选择语句,又称开关语句

    语句格式
    switch(表达式)
    {
          case 常量表达式1:
             语句1;
          break;
         
          case 常量表达式2:
             语句2;
          break;
    
    ……
          case 常量表达式n:
             语句n;
          break;
    
          default:
             语句n+1;
          break;
    }
    
    

    首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值 相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行 default后面的语句n+1,然后退出switch语句,程序流程转向开关语句的下一个语句.

    例如

    switch(grade)
    {
        case 'A': /*注意,这里是冒号:并不是分号;*/
           printf("85-100\n");
        break; /*每一个case语句后都要跟一个break用来退出switch语句*/
        case 'B': /*每一个case后的常量表达式必须是不同的值以保证分支的唯一性*/
           printf("70-84\n");
        break;
        case 'C':
           printf("60-69\n");
        break;
        case 'D':
           printf("<60\n");
        break;
        default:
           printf("error!\n");
    } 

    6.6while语句

    while为不确定性循环,当表达式的结果为真true时,执行循环中的语句;表达式为假false不执行循环。

    语句格式

    while(expression)
      statement

    如果expression语句为true,将会无限次循环,不建议这样写,这样会导致浏览器崩溃

    例如

    while (1)
      {
        document.write("hello");
      }

    这个语句将会无限次输出hello,会导致浏览器崩溃;

    6.7 do/while语句

    do...while为不确定性循环,先执行大括号中的语句,当表达式的结果为真true时,执行循环中的语句;表达式为假false不执行循环,并退出do...while循环。

    do{
      statement1
    }while (expression)
      {
        statement2
      }
    例如:计算1-100的所有整数之和(包括1与100)
    var i=0;
    var iSum=0;
    do
    {
            iSum+=i;
            i++;
    }while(i<=100)
    document.write("1-100的所有数之和为"+iSum);
    
    

    while与do...while的区别

    • do...while将先执行一遍大括号中的语句,再判断表达式的真假。这是它与while的本质区别
    • do...while与while是可以互相转化的

    6.8 for循环

    语句格式

    for(初始化表达式;判断表达式;循环表达式)
    {
            语句;
    }

    说明 for语句非常灵活完全可以代替 while与 do...while语句。先执行"初始化表达式",再根据"判断表达式"的结果判断是否执行循环,当判断表达式为真true时,执行循环中的语句,最后执行"循环表达式",并继续返回循环的开始进行新一轮的循环;表达式为假false不执行循环,并退出for循环。

    例如;计算1-100的所有整数之和(包括1与100)

    for(var i=0,iSum=0;i<=100;i++)
    {
            iSum+=i;
    }
    document.write("1-100的所有数之和为"+iSum);

    for语句使用中的注意事项

    • 应该使用大括号{}包含多条语句(一条语句也最好使用大括号)
    • 初始化表达式可以包含多个表达式,循环表达式也可以包含多个表达式

    6.9 for/in语句

    for...in 语句用于遍历数组或者对象的属性(对数组或者对象的属性进行循环操作)。

    for ... in 循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。

    语法

    for (变量 in 对象)
    {
        code;
    }

    “变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。

    例子:使用 for ... in 循环遍历数组。

    <script type="text/javascript">
    var x
    var mycars = new Array()
    mycars[0] = "Saab"
    mycars[1] = "Volvo"
    mycars[2] = "BMW"
    
    for (x in mycars)
    {
    document.write(mycars[x] + "<br />")
    }
    </script>

    6.10 break语句和continue语句

    break 语句用于跳出循环。

    continue 用于跳过循环中的一个迭代。

    Break 语句

    它用于跳出 switch() 语句。

    break 语句可用于跳出循环。

    break 语句跳出循环后,会继续执行该循环之后的代码(如果有的话):

    实例

    for (i=0;i<10;i++)
      {
      if (i==3)
        {
        break;
        }
      x=x + "The number is " + i + "<br>";
      }

    输出:

    The number is 0
    The number is 1
    The number is 2

    由于这个 if 语句只有一行代码,所以可以省略花括号:

    for (i=0;i<10;i++)
      {
      if (i==3) break;
      x=x + "The number is " + i + "<br>";
      }
    Continue 语句

    continue 语句中断循环中的迭代,如果出现了指定的条件,然后继续循环中的下一个迭代。

    该例子跳过了值 3:

    实例

    for (i=0;i<=10;i++)
     {
     if (i==3) continue;
      x=x + "The number is " + i + "<br>";
      }

    输出:

    The number is 0
    The number is 1
    The number is 2
    The number is 4
    The number is 5
    The number is 6
    The number is 7
    The number is 8
    The number is 9

    6.11 var语句和return语句

    var语句允许明确的声明一个或者多个变量。

    语法如下

    var name_1 [ = value_1] [ ,..., name_n [= value_n]]

    关键字var之后跟随的是一个要声明的变量的列表,变量之间用逗号分隔。在这个列表中,每一个变量都可选地具有一个初始化表达式,用于指定它的初始值。

    例如:

    var i;
    var j = 0;
    var p,q;
    var greeting = "hello" + name;
    var x = 2.34, y = Math.cos(0.75) , r, theta;

    6.13 function语句

    function语句定义一个javascript函数。

    语法如下

    function functionname ([arg1 [, arg2 [,...[, argN]]]]) {
        statements
    } 

    参数

    functionname

    必需。 函数的名称。必须是一个标示符,不能是字符串或表达式

    arg1...argN

    可选。 函数理解的参数的可选的用逗号分隔的列表。

    statements

    可选。 一个或多个 JavaScript 语句。

    备注:使用 function 语句来声明一个以后要使用的函数。 在脚本的其他地方调用该函数前,不执行 statements 中包含的代码。JavaScript 对大小写敏感。关键词 function 必须是小写的,并且必须以与函数名称相同的大小写来调用函数。

    6.13.1调用带参数的函数

    在调用函数时,您可以向其传递值,这些值被称为参数。

    这些参数可以在函数中使用。

    您可以发送任意多的参数,由逗号 (,) 分隔:

    myFunction(argument1,argument2)

    当您声明函数时,请把参数作为变量来声明:

    function myFunction(var1,var2)
    {
    这里是要执行的代码
    }

    变量和参数必须以一致的顺序出现。第一个变量就是第一个被传递的参数的给定的值,以此类推。

    例子

    <button onclick="myFunction('Bill Gates','CEO')">点击这里</button>
    <script>
    function myFunction(name,job)
    {
    alert("Welcome " + name + ", the " + job);
    }
    </script>

    输出

    Welcome Bill Gates,the CEO

    6.13.2 带有返回值的函数

    有时,我们会希望函数将值返回调用它的地方。

    通过使用 return 语句就可以实现。

    在使用 return 语句时,函数会停止执行,并返回指定的值。

    语法

    function myFunction()
    {
    var x=5;
    return x;
    }

    上面的函数会返回值 5。

    注释整个 JavaScript 并不会停止执行,仅仅是函数。JavaScript 将继续执行代码,从调用函数的地方。

    函数调用将被返回值取代:

    var myVar=myFunction();

    myVar 变量的值是 5,也就是函数 "myFunction()" 所返回的值。

    即使不把它保存为变量,您也可以使用返回值:

    document.getElementById("demo").innerHTML=myFunction();

    "demo" 元素的 innerHTML 将成为 5,也就是函数 "myFunction()" 所返回的值。

    您可以使返回值基于传递到函数中的参数:

    实例

    计算两个数字的乘积,并返回结果:

    function myFunction(a,b)
    {
    return a*b;
    }
    document.getElementById("demo").innerHTML=myFunction(4,3);

    "demo" 元素的 innerHTML 将是:

    12

    在您仅仅希望退出函数时 ,也可使用 return 语句。返回值是可选的:

    function myFunction(a,b)
    {
    if (a>b)
      {
      return;
      }
    x=a+b
    }

    如果 a 大于 b,则上面的代码将退出函数,并不会计算 a 和 b 的总和。

    6.14 throw ,try/catch/finally语句

    throw语句用来抛出一个异常(exception),通知程序发生了错误或者异常状况。catch语句将会捕获这个异常对其进行处理。

    throw语句的语法如下

    throw expression;

    expression的值可以是任何类型的,但是通常是Error对象或者Error子类的一个实例。

    来看个例子

    function factorial(x){
        if(x < 0 ) throw new Error("x must not be negative");//如果x小于0 ,将会抛出一个异常
    
        for(var f = 1; x > 1; f *= x,x--);
        return f;
    }

    异常抛出时,程序应该怎么执行呢;

    你知道的,javascript是一种解释型语言(解释一句,执行一句)。异常抛出了,它告诉解释器,“你的程序出现异常啦”。接着,解释器就停止了程序的执行,赶紧找到最近的异常处理器。javascript中的try/catch/finally语句中的catch从句就是异常处理器。但是要是他没有catch从句怎么办,那就向上抛出异常,知道有个地方能够捕获它,处理它。

    接下来,讨论 try/catch/finally语句

    try/catch/finally语句就是javascript中的异常处理机制。

    try块中是异常需要被处理的代码块,catch从句跟在try之后,他是try块某个地方发生异常时调用语句块;finally块跟在catch后面,存放清除代码,无论try发生了什么,finally都会被执行。

    catch,finally是可选的,但是try块后至少要有一个catch,或者finally;

    所以呢,try/catch/finally语句的语法如下

     try{   
         tryStatements//必选项。可能发生错误的语句。     
    }catch(exception){   //必选项。任何变量名。exception    的初始化值是扔出的错误的值。 ;
          catchStatements//可选项。处理在相关联的    tryStatement    中发生的错误的语句。   
    }finally{   
           finallyStatements//可选项。在所有其他过程发生之后无条件执行的语句。     
    }
     try{   
         tryStatements//必选项。可能发生错误的语句。     
    }finally{   
           finallyStatements//可选项。在所有其他过程发生之后无条件执行的语句。     
    }  
     try{   
         tryStatements//必选项。可能发生错误的语句。     
    }catch(exception){   //必选项。任何变量名。exception    的初始化值是扔出的错误的值。 ;
          catchStatements//可选项。处理在相关联的    tryStatement    中发生的错误的语句。   
    }

    目前我们可能得到的系统异常主要包含以下6种:

    • EvalError: raised when an error occurs executing code in eval_r()  
    • RangeError: raised when a numeric variable or parameter is outside of its valid range  
    • ReferenceError: raised when de-referencing an invalid reference  
    • SyntaxError: raised when a syntax error occurs while parsing code in eval_r()  
    • TypeError: raised when a variable or parameter is not a valid type  
    • URIError: raised when encodeURI() or decodeURI() are passed invalid parameters  

    上面的六种异常对象都继承自Error对象。他们都支持以下两种构造方法:

       new Error(); new Error("异常信息");]

    来看个实例

    try {
     throw new Error("Whoops!");
    } catch (e) {
     alert(e.name + ": " + e.message);
    }
  • 相关阅读:
    HttpEntity转换Inputstream(红色)加XmlPull解析
    ImageLoader加载图片
    HttpClient——Get,Post
    Android例子源码非第三方实现根据字母排序的城市列表
    Android 仿QQ消息界面
    css折叠表格
    前端页面文字长度显示控制
    (首页上一页下一页尾页 + 下拉框跳转)分页功能
    基于bootstrap的分页插件
    HTML 禁止复制文字
  • 原文地址:https://www.cnblogs.com/huanhuan8808/p/3069974.html
Copyright © 2011-2022 走看看