当前位置

网站首页> 程序设计 > 开源项目 > 程序开发 > 浏览文章

JavaScript语句的一些注意要点

作者:小梦 来源: 网络 时间: 2024-06-26 阅读:

语句

ECMA-262 规定了一组语句(也被成为流控制语句)

if 语句

大多数编程语言中最为常用的一个语句就是if 语句。语法如下:

if (condition1) {    statement1;} else if (condition2) {    statement2;} else {    statement3;}

举个例子:

var num = 10;if (num > 50) {    document.write("bigger than 50")} else if (num < 0) {    document.write("smaller than 0")} else {    document.write("between 0 and 50")} //"between 0 and 50"

do-while 语句

这是一个后测试循环语句;只有在循环体中的代码执行以后,才会测试出口条件。

do {    statement;} while (expression);

举个例子:

var i = 0;do {    document.write("the number is " + i + "<br/>");    i++;} while (i < 10); 

while 语句

这是一个前测试循环语句;在循环体中的代码执行以前,就会测试出口条件。

while (expression) statement

举个例子:

var i = 0;while (i <= 10) {    document.write(i + " ");    i++} //0 1 2 3 4 5 6 7 8 9 10

for 语句

这是一个前测试循环语句;在循环体中的代码执行以前,就会测试出口条件。

for (initialization; expression; post-loop-expression) statement

举个例子:

for (var i = 0; i < 11; i ++) {    document.write(i + " ")} //0 1 2 3 4 5 6 7 8 9 10

使用while 语句做不到的,用for 语句也做不到。

由于ECMAScript 中不存在块级作用域,因此在循环内部定义的变量也可以在外部访问到。

for-in 语句

for-in 语句是一种精准的迭代语句。可以用来枚举对象的属性。

语法如下:

for (property in expression) statement

下面是示例:

var cars = new Array;cars = ["benz","BMW"];for (x in cars){    document.write(cars[x] + " ")} //benz BMW

通过for-in 语句循环输出的属性名的顺序是不可预测的。如果表示要迭代的对象的变量值为null 或undefined,for-in 语句会抛出错误。因此建议在使用for-in 循环之前,先检测对象的值是不是null 或undefined。

label 语句

使用label 语句可以在代码中添加标签,以便在将来使用。语法如下:

label: statement

下面是例子:

start: for (var i = 0; i < 5; i ++){    document.write(i + " ");    if (i == 2){    }} //0 1 2 3 4

break 和continue 语句

虽然,两个语句都是会导致立即退出循环。但break 会强制继续执行循环后面的语句;而continue 则会退出循环后从循环的顶部继续执行。举个例子:

var num = 0;for (var i = 1; i < 7; i ++){    num ++;}document.write(num + "<br/>"); //num 初始值为0,循环体执行了6次,每次num + 1,结果是num = 0 + 6为6var num = 0;for (var i = 1; i < 7; i ++){    if (i % 5 == 0){        break;    }    num ++;}document.write(num + "<br/>"); //num 初始值为0,循环体执行了4次,每次num + 1,结果是num = 0 + 4为4(当i = 5时退出循环)var num = 0;for (var i = 1; i < 7; i ++){    if (i % 5 == 0){        continue;    }    num ++;}document.write(num + "<br/>"); //num 初始值为0,循环体支行了5次,媒体num + 1,结果是num = 0 + 5为5(当i = 5时退出循环,从循环的顶端继续执行)

另外,break 和continue 语句都可以与label 语句联合使用。如:

var num = 0;outermost:for (var i = 0; i < 10; i ++){    for (var j = 0; j < 10; j ++){        if (i == 5 && j == 5){break outermost;        }        num ++;    }}document.write(num); //55 正常情况下应该是i 从0 - 9有10种可能,j 从0 - 9也有10种可能,一共是10 * 10 = 100种可能,即该循环会执行100次。//当i = 5同时j = 5时停止循环,实际上循环了55 次(i = 0时,j有10种可能,即10次循环;i = 1、2、3、4时,也有10种可能,一共加起来则有50次,最后加上i=5时的5次,共55次),num则为55。var num = 0;outermost:for (var i = 0; i < 10; i ++){    for (var j = 0; j < 10; j ++){        if (i == 5 && j == 5){continue outermost;        }        num ++;    }}document.write(num); //95//当i = 5时且j = 5时,将会从头开始循环,也就是跳过了i = 5,j = 5、6、7、8、9这5种可能,并且继续循环。所以就是100种可能减去这5种可能,则结果是num = 95。

with 语句

该语句的作用是将代码的作用域设置到一个特定的对象中。with 语句的语法如下:

with (expression) statement

举例:

with (location){    var qs = search.substring(1);    var hostName = hostname;    var url = href;}

上面的写法就是从下面这个语句改过来的:

var qs = location.search.substring(1);var hostName = location.hostname;var url = location.href;

该语句会使性能下降,不建议使用

switch 语句

语法如下,可以用来代替if 语句:

switch (expression) {    case value:        statement;        break;    case value:        statement;        break;    case value:        statement;        break;    default:        statement;}

例子如下:

var i = 15;if (i == 25){    document.write("the num is 25");}else if (i == 35){    document.write("the num is 35");}else if (i == 15){    document.write("the num is 15");}else {    document.write("others")}

上面的if 语句就可以写成下面的switch 语句:

switch(15){    case 15: //相当于if 语句中的else if        document.write("15");        break;    case 25:        document.write("25");        break;    case 35:        document.write("35");        break;    default: //相当于if 语句中的else        document.write("others");}

为每个case 后面都添加一个break 语句,就可以避免同时执行多个case 代码的情况。

当一种情况和另一种情况所产生的结果需要合并又该如何操作呢:

switch(15){    case 15: //相当于if 语句中的else if        document.write("15");    //  break; 这里忽略了break 就可以让case 15 与case 25 合并,在这里就是同时执行document.write("15") 和document.write("25")    case 25:        document.write("25");        break;    case 35:        document.write("35");        break;    default: //相当于if 语句中的else        document.write("others");}

具体的来说就是,如果需要混合几种情形,只需要省略break 关键字即可。但不要忘了在代码中添加注释说明是有意省略了break 关键字如:

switch (3){    case 1:    document.write("the number is 1" + "<br/>");    break;    case 2:    document.write("the number is 2" + "<br/>");    break;    case 3:    //合并两种情形    case 4:    document.write("the number is unknown" + "<br/>");}//"the number is unknown"

另外,switch 语句可以使用任何数据类型,每个case 的值甚至还可以是变量和表达式。如:

var x = "oliver young"switch (x){    case "oliver " + "young":    document.write("hello Mr.young.");    break;    case "troy":    document.write("hello troy.");    break;    default:    document.write("sorry, i didn't know you.");} //"hello Mr.young."

或者:

var num = 10;switch(num){    case 100 - 90:    document.write("right");    break;    case 100%10:    document.write("also right");    break;    default:    document.write("bad num");    } //"right"

又或者:(注意switch(true))

var num = 8;switch(true){    case num.toString(10) === 8:    document.write("true num");    break;    default:    document.write("wrong num");} //"wrong num"

上面这个例子中,之所以要给switch() 传值true,就是为了使得每个case 值都可以返回一个布尔值。这样,每个case 按照顺序被求值,直到遇到匹配的值或者遇到default 语句为止。

热点阅读

网友最爱