前端开发——JavaScript的条件语句

 


世界不仅有黑,又或者白

世界而是一道精致的灰


 ——Lungcen

 

 

目录

条件判断语句

if 语句

if else 语句

if else if else 语句

 switch语句

break 关键字

case 子句

default语句

while循环语句

do while循环语句

for循环语句

for 循环中的三个表达式

for 循环嵌套

for 循环变体——for in

for 循环变体——for of

break 语句 和 continue 语句

JavaScript 标签



条件判断语句


if 语句

        if 语句是条件判断语句中最简单的一个条件判断语句,它只有当条件表达式成立的时候才会执行{ }中的代码内容。

    

if else 语句

        if 语句的升级版,在 if 语句中只有成立的时候才会执行一个条件,但是在日常生活中,不仅仅只有一面。就像这个世界不仅仅是黑,也不仅仅是白。

        if else 语句不仅可以指定当表达式成立时要执行的代码,还可以指定当表达式不成立时要执行的代码

    

if else if else 语句

        if 和 if else 语句都只有一个条件表达式,而 if else if else 语句是它们更高级的形式,在 if else if else 语句中允许定义多个条件表达式,并根据表达式的结果执行相应的代码。

if (条件表达式 1) {
    // 条件表达式 1 为真时执行的代码
} else if (条件表达式 2) {
    // 条件表达式 2 为真时执行的代码
}
...
  else if (条件表达式N) {
    // 条件表达式 N 为真时执行的代码
} else {
    // 所有条件表达式都为假时要执行的代码
}
    

 switch语句


        switch语句可以根据不同的条件来执行不同的代码,这个效果和if esle语句的多分支结构有点类似。但是与 if else 多分支结构相比,switch case 语句更加简洁和紧凑,执行效率更高。

switch (表达式){
    case value1:
        statements1  // 当表达式的结果等于 value1 时,则执行该代码
        break;
    case value2:
        statements2  // 当表达式的结果等于 value2 时,则执行该代码
        break;
    ......
    case valueN:
        statementsN  // 当表达式的结果等于 valueN 时,则执行该代码
        break;
    default :
        statements  // 如果没有与表达式相同的值,则执行该代码
}

switch 语句根据表达式的值,依次与 case 子句中的值进行比较:

  • 如果两者相等,则执行其后的语句段,当遇到 break 关键字时则跳出整个 switch 语句。

  • 如果不相等,则继续匹配下一个 case。

  • switch 语句包含一个可选的 default 关键字,如果在前面的 case 中没有找到相等的条件,则执行 default 后面的语句段。

break 关键字

        switch 语句是逐行执行的,当 switch 语句找到一个与之匹配的 case 子句时,不仅会执行该子句对应的代码,还会继续向后执行,直至 switch 语句结束。

        为了防止这种情况产生,需要在每个 case 子句的末尾使用 break 来跳出 switch 语句。break 除了可以用来跳出 switch 语句外,还可以用来跳出循环语句(for、for in、while、do while )

case 子句

        case 子句可以省略语句,这样当匹配时,不管下一个 case 条件是否满足,都会继续执行下一个 case 子句的语句。

        在 switch 语句中,case 子句只是指明了执行起点,但是没有指明执行的终点。如果在 case 子句中没有 break 语句,就会发生连续执行的情况,从而忽略后面 case 子句的条件限制,这样就容易破坏 switch 结构的逻辑。

        所以说在函数中使用 switch 语句,需要使用 return 语句(或者break语句)终止 switch 语句,防止代码继续执行。

default语句

        default 是 switch 子句,可以位于 switch 内任意位置,不会影响多重分支正常执行

default 语句与 case 语句简单比较如下:

  • 语义不同:default 为默认项,case 为判例。

  • 功能扩展:default 选项是唯一的,不可以扩展。而 case 选项是可扩展的,没有限制。

  • 异常处理:default 与 case 扮演的角色不同,case 用于枚举,default 用于异常处理。


while循环语句


while 循环在每次循环之前,会先对条件表达式进行求值

        如果条件表达式的结果为 true,则执行{ }中的代码

        如果条件表达式的结果为 false,则退出 while 循环,执行 while 循环之后的代码。

var i=1;
var sum=0;
while (i <= 100){
    sum += i;
    i++;
}

        在编写循环语句时,一定要确保条件表达式的结果能够为假(即布尔值 false),因为只要表达式的结果为 true,循环会一直持续下去,不会自动停止,对于这种无法自动停止的循环,我们通常将其称为“无限循环”或“死循环”。


do while循环语句


do while 循环与 while 循环非常相似,不同之处在于:

        do while 循环会先执行循环中的代码,然后再对条件表达式进行判断。因此,无论条件表达式是真还是假,do while 循环都能至少执行一次,而 while 循环就不一样,如果条件表达式为假会直接退出 while 循环。

do {
    // 需要执行的代码
} while (条件表达式);

需要注意的是:do while 循环与 while 循环还有一点不同,那就是 do while 循环的末尾需要使用分号;进行结尾,而 while 循环则不需要


for循环语句


for 循环 和 switch语句一样,适合在已知循环次数时使用

while循坏 和 do while循坏,就适合不知道循坏数的时候使用

for(initialization; condition; increment) {
    // 要执行的代码
}

for 循环中包含三个可选的表达式 initialization、condition 和 increment,其中:

  • initialization:为一个表达式或者变量声明,我们通常将该步骤称为“初始化计数器变量”,在循环过程中只会执行一次;

  • condition:为一个条件表达式,与 while 循环中的条件表达式功能相同,通常用来与计数器的值进行比较,以确定是否进行循环,通过该表达式可以设置循环的次数;

  • increment:为一个表达式,用来在每次循环结束后更新(递增或递减)计数器的值。

for 循环中的三个表达式

 for 循环中括号中的三个表达式是可以省略的,但是用于分隔三个表达式的分号不能省略

// 省略第一个表达式
var i = 0;
for (; i < 5; i++) {
    // 要执行的代码
}

// 省略第二个表达式
for (var y = 0; ; y++) {
    if(y > 5){
        break;
    }
    // 要执行的代码
}
// 省略第一个和第三个表达式
var j = 0;
for (; j < 5;) {
    // 要执行的代码
    j++;
}

// 省略所有表达式
var z = 0;
for (;;) {
    if(z > 5){
        break;
    }
    // 要执行的代码
    z++;
}

for 循环嵌套

和if else语句一样,无论是哪种循环,都可以嵌套使用(即在一个循环中再定义一个或多个循环)

for (var i = 1; i <= 9; i++) {
    for (var j = 1; j <= i; j++) {
        document.write(j + " x " + i + " = " + (i * j) + " ");
    }
    document.write("
"); }

for 循环变体——for in

        for in 循环是一种特殊类型的循环,也是普通 for 循环的变体,主要用来遍历对象,使用它可以将对象中的属性依次循环出来(注意循坏对象是——>对象)

for (variable in object) {
  // 要执行的代码
}

        variable 为一个变量,每次循环时这个变量都会被赋予不同的值,我们可以在{ }中使用这个变量来进行一系列操作;

        object 为要遍历的对象,在每次循环中,会将 object 对象中的一个属性的键赋值给变量 variable,直到对象中的所有属性都遍历完。

// 定义一个对象
var person = {"name": "Clark", "surname": "Kent", "age": "36"};

// 遍历对象中的所有属性
for(var prop in person) {
    document.write("

" + prop + " = " + person[prop] + "

"); }

 for in 循环是为遍历对象而创建的,虽然也可以遍历数组,但是并不推荐,若要遍历数组,可以使用 for循环或者 for of循环。

for 循环变体——for of

        for of 循环是 ECMAScript6 中新添加的一个循环方式,与 for in 循环类似,也是普通 for 循环的一种变体,使用 for of 循环可以轻松的遍历数组或者其它可遍历的对象(注意对象是——>数值或者可遍历对象)

for (variable of iterable) {
    // 要执行的代码
}

        variable 为一个变量,每次循环时这个变量都会被赋予不同的值,我们可以在后面的{ }中使用这个变量来进行一系列操作;

        iterable 为要遍历的内容,在每次循环中,会将 iterable 中的一个值赋值给变量 variable,直到 iterable 中的所有值都遍历完。

// 定义一个数组
var arr = ['a', 'b', 'c', 'd', 'e', 'f'];
// 使用 for of 循环遍历数组中的每个元素
for (var value of arr) {
    document.write(value + ", ");
}
document.write("
");
// 定义一个字符串
var str = "Hello World!";
// 使用 for of 循环遍历字符串中的每个字符
for (var value of str) {
    document.write(value + ", ");
}
document.write("
");
// 定义一个对象
var obj = {"name": "Clark", "surname": "Kent", "age": "36"};
// 使用 for in 循环遍历对象中的所有属性
for(var value in obj) {
    document.write(value + ", ");
}

虽然 for of 循环也可以遍历对象,但并不推荐,若要遍历对象可以使用 for in 循环。

break 语句 和 continue 语句

        break 语句前面已经简单了解过了 break 语句,使用 break 语句可以跳出 switch 语句。其实使用 break 语句还可以用来跳出循环。

        continue 语句用来跳过本次循环,执行下次循环。当遇到 continue 语句时,程序会立即重新检测条件表达式,如果表达式结果为真则开始下次循环,如果表达式结果为假则退出循环。

JavaScript 标签

        JavaScript 中的标签与 HTML 中的标签不同,JavaScript 中的标签就是一个标识符(类似变量名),后面跟随一个冒号 

        JavaScript 标签可以声明在任何语句或者代码块之前,并与 break 或 continue 配合来跳出特定的循环,例如当多个循环嵌套使用时,单纯使用 break 只能跳出当前的循环,无法跳出外层循环,如果将 break 与标签配合使用,则可以一次跳出多层循环

outerloop:          // 定义一个标签    
for (var i = 0; i < 5; i++) {
   document.write("外层循环: " + i + "
"); innerloop: // 定义一个标签 for (var j = 0; j < 5; j++) { if (j > 3 ) break ; // 跳出内层循环 if (i == 2) break innerloop; // 跳出内层讯息 if (i == 4) break outerloop; // 跳出外层循环 document.write("内层循环: " + j + "
"); } } document.write("循环结束!
");

注意:1、break 或 continue 与标签之间不能出现换行

           2、标签名称和相关循环之间不能出现其它代码。

 


世界不仅有黑,又或者白

世界而是一道精致的灰


 ——Lungcen

你可能感兴趣的:(javascript,前端,开发语言)