• Javascript高级编程学习笔记(6)—— 流程控制语句


    话不多说,我们直接开始进入今天的主题

    流程控制语句

    首先什么是流程控制语句呢?

    顾名思义,就是控制流程的语句。

    在JS中语句定义了ECMAScript中的主要语法,让我们可以使用一系列的关键字来完成指定任务。

    语句也是构成一门编程语言旳基础,所以还是有必要记录一下的。

    虽然有些语句不常用,但存在即合理 emm

    if语句

    在大多数编程语言中if语句,是最常用的语句

    语法如下:

    if(条件){
      代码块1    
    }else{
      代码块2  
    }

    当代码块只有一行语句时可以不用添加花括号。

    但是在实际使用过程中,最好都加上花括号以保证代码的可读性

    其主要作用用于控制分支,以区分不同的情况。

    在ES6中条件的小括号是一个单独的作用域,作用域这里不细说后面的文章会写到

    do-while 语句

    这是一种后测试循环语句,即在循环体结束后才进行条件测试,与for、while不同的地方在于do-while中的代码至少会被执行一次

    语法如下:

    do{
        代码块
    }while(条件)

    while 语句

    跟do-while不同,while是一种前测试语句;

    即在循环之前就会对条件表达式求值,如果不满足条件就不会执行循环;

    所以while循环中的代码不一定会执行(如果不满足初始条件的话)

    语法如下:

    while(条件){
        代码块
    }

    for 语句

    for也是一种前测试循环语句,但是for具有循环前初始化变量、定义循环后执行代码的能力

    语法如下:

    for(初始化;条件表达式;循环执行代码){
        代码块
    }

    需要注意的是,for循环只是将变量初始化等与循环有关的语句集中在了一起

    所以while做不到的for也做不到

    并且在for中初始化变量,和在循环外部初始化变量没有什么区别,因为JS中不存在块级作用域(ES6以前)

    除此而外,for中的三个表达式都是可选的,所以为for循环提供了极大的灵活性

    for-in  语句

    跟for不同,for-in是一种精准迭代语句,用于枚举对象属性

    语法如下:

    for(var name in obj){
        代码块
    }

    每一次循环name都会是一个属性名

    在循环体的代码块中可以通过obj[name],的方式获取对象中对应的值

    需要注意:

    1. ECMAScript对象的属性没有顺序,所以遍历的顺序不可预知

    2.如果循环的对象是null或者undefined在老版本中会抛出错误

    3.for-in循环只能遍历出对象上可遍历属性

    label 语句

    label可以为代码添加标签,以供break,continue跳转到指定位置

    语法如下:

    标签名:
    代码块
    
    
    for(var i = 0;;i++){
        break 标签名;  
    }

    多用于多层循环嵌套的情况,便于跳出循环到指定位置

    break、continue语句

    用于控制循环的精确执行

    区别在于:

    break会跳出整个循环

    continue只会跳出当前这一次循环

    这两个语句都可以和label配合使用

    with 语句

    这个语句大家可能不太常见

    其作用是将代码作用域设定到指定对象下

    目的是为了简化大量书写同一对象

    语法如下:

    with(对象){
      代码块  
    }

    代码块中的代码的作用域就是设置的对象

    感觉还是比较好用的,这样就不用使用call来改变函数this指向了

    with不常用当然是有原因的:

    1.严格模式下不能使用

    2.大量使用会导致性能下降,并且会给代码调试造成困难

    switch语句

    用于多分支的情况,避免使用一串的if-else

    语法如下:

    switch(表达式){
        case 值1:
            代码块1
            break;    
        case 值2:
            代码块2
            break;
        case 值3:
            代码块3
            break;
    }

    当表达式的值和case后的值相等时则会执行对应的代码块

    需要注意的是:

    ECMA中的switch的特殊之处在于,case的值不仅限于数值

    甚至可以是对象,也不一定是常量可以是变量,甚至是表达式都可以

    除此而外,switch不会进行类型转换,判断时使用的是全等操作符

    PS:明天出差,可能会拖更,对期待更新的小伙伴说一声不好意思啦(虽然也没什么人期待更新 哭哭唧唧)

  • 相关阅读:
    sublime c/c++ 环境
    sublime编写markdownm
    第八次课程作业
    第七次课程作业
    第六次作业
    第五次课程作业
    Arithmatic项目修改总结
    第四次课程作业
    第三次课程作业
    课程作业二
  • 原文地址:https://www.cnblogs.com/lhyxq/p/10075277.html
Copyright © 2020-2023  润新知