JavaScript语句的一些注重要点

语句

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为6

var 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 语句为止。

    原文作者:JS菌
    原文地址: https://segmentfault.com/a/1190000003971458
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞