JS 数据的流程

113 阅读3分钟

程序就像水一样流动,代码默认会一行一行的向下执行,但是遇到一些特殊的关键字,会改变它的流向,由这些关键字规定的能改变程序流向的语句,叫做流程控制语句

JS中的流程控制语句有:条件语句、循环语句、跳转语句、标记语句、异常处理语句、调试语句、严格模式语句。

条件语句

  • if...else:根据条件执行不同的代码块
  • switch:在多个选项之间进行选择执行

循环语句

  • while:在条件为真的情况下重复执行一段代码块
  • do...while:先执行一次循环体,然后再检查循环条件是否满足,只要条件满足,就会一直执行循环体,直到条件不再满足为止
  • for:创建一个循环,它包含了三个可选的表达式,这三个表达式被包围在圆括号之中,使用分号分隔,后跟一个用于在循环中执行的语句
  • for...of:遍历可迭代对象(Array,Map,Set,String,TypedArray,arguments 等等)中的元素
  • for await...of:遍历异步迭代器返回的值
  • for...in:遍历对象属性

跳转语句

  • break:终止当前循环、switch语句或label 语句,并接着执行被中止语句之后的语句
  • continue:跳过当前循环中的某个迭代,直接进入下一个迭代
  • return:终止函数的执行,并返回一个指定的值给函数调用者,如果没有指定值,则返回undefined

标记语句

  • label:在一条语句前面加个可以引用的标识符,可以和 break 或 continue 语句一起使用,通常用于在嵌套循环中跳出多层循环
outerloop:
for (var i = 0; i < 5; i++) {
  innerloop:
  for (var j = 0; j < 5; j++) {
    if (i * j > 6) {
      break outerloop;
    }
    console.log(i, j);
  }
}
// outerloop和innerloop都是label语句,它们分别标记了外层循环和内层循环
// 当i * j大于6时,使用break语句跳出了outerloop标记的循环

异常处理语句

  • throw:用来抛出一个用户自定义的异常,当前函数的执行将被停止,throw 之后的语句将不会执行,并把控制权交给调用该代码的上层代码。通常throw语句会与try...catch语句一起使用,以便在出现错误时能够捕获并处理错误,这种情况下控制权将被传递到第一个 catch 块,如果调用者函数中没有 catch 块,程序将会终止
  • try-catch:标记要尝试的语句块,并指定一个出现异常时抛出的响应

try语句包含了由一个或者多个语句组成的try块,和至少一个catch块或者一个finally块的其中一个,或者两个兼有,下面是三种形式的try声明:

  1. try...catch
  2. try...finally
  3. try...catch...finally
try {
  // 可能会抛出异常的代码块
} catch (error) {
  // 处理异常的代码块
} finally {
  // 在try-catch语句执行完毕后必定会执行的代码块
}

调试语句

  • debugger:当代码执行到debugger语句时,程序会暂停执行,等待开发者在调试器中逐行调试代码

严格模式语句

  • "use strict"; :为整个脚本或在个别函数中定义严格模式

总结

JS是一门编程语言,其核心是处理数据,如何优雅高效的处理数据应该是每个JS程序员追求的目标。

所以,笔者认为的好代码应该具备这些条件:清晰的数据表达准确的数据运算简洁的数据流程稳定的数据存储

其中,最能体现优雅的,我认为是简洁的数据流程,熟练掌握这块的知识,势必能让我们的代码更优雅。