首页 > 其他分享 >【JS】121-重温基础:流程控制和错误处理

【JS】121-重温基础:流程控制和错误处理

时间:2022-11-28 14:36:01浏览次数:44  
标签:语句 do err JS try 121 something catch 错误处理

【JS】121-重温基础:流程控制和错误处理_错误信息

本文是 重温基础 系列文章的第二篇,需要让自己静下心来,学习,养成好习惯。

本章节复习的是JS中的控制流语句,让我们能实现更多的交互功能。

注意一点:在ES6之前,JS是没有块作用域的,如果在语句块外部声明的变量,如果在块内部声明一个相同名称的变量,那么程序将取后声明的这个变量的值:

  1. ​var a = 1;​
  2. ​{​
  3. ​    var a = 2;​
  4. ​}​
  5. ​a; // 2​

但是ES6开始,用 ​​let​​声明的变量是块作用域的:

  1. ​let a = 1;​
  2. ​{​
  3. ​    let a = 2;​
  4. ​}​
  5. ​a;  // 1​

1.条件判断语句

用于根据指定条件返回结果,常见的是 ​​if...else​​​和 ​​switch​​:

if...else语句

若条件为,则执行 ​​if​​后面的语句,若条件为,则执行 ​​else​​后面的语句:

  1. ​if(condition){​
  2. ​    // do something​
  3. ​}else{​
  4. ​    // else 为可选​
  5. ​    // do something​
  6. ​}​

False等效值
在JS中下面的值常常被计算为 ​​​false​

  • false
  • undefined
  • null
  • 0
  • NaN
  • 空字符串("")

注意
不要使用原始布尔值 ​​​true​​​和 ​​false​​ 与 Boolean对象的真和假混淆:

  1. ​let a = new Boolean(false);  // Boolean {true}​
  2. ​if (a);         //  永真​
  3. ​if (a == true); // 永假 ​

2.switch语句

通过匹配表达式的值到每个 ​​case​​标签,若匹配成功则执行相关语句:

  1. ​switch ( 'leo' ){​
  2. ​    case 'pingan':​
  3. ​        // do something​
  4. ​        break;   // 可选​
  5. ​    case 'leo':​
  6. ​        // do something​
  7. ​        break;​
  8. ​    default:  // 都不匹配 则执行默认​
  9. ​        // do something​
  10. ​        break;​
  11. ​}​

​break​​​为可选,目的用于保证在正确匹配后,能跳出程序的 ​​switch​​​语句,并继续执行其他代码,若没有 ​​break​​​则程序会继续执行下一个 ​​case​​语句。

3.异常处理语句

当 ​​throw​​​语句抛出的异常,我们可以使用 ​​try...catch​​捕获并处理,这里需要先介绍两个概念:

throw语句:

用于抛出异常,后面可以是任何表达式:

  1. ​throw "error !";​
  2. ​throw 404;​
  3. ​throw {msg: 'err'};​

try...catch语句:

用于捕获异常, ​​try​​​后面是程序正常时候执行的程序, ​​catch​​​后面是当前面有错误抛出的时候执行,并且捕获错误信息作为参数,并且在 ​​catch​​块执行完成,参数不可再用。

  1. ​function f(){​
  2. ​    throw 'test error!'​
  3. ​}​
  4. ​try{​
  5. ​    f();​
  6. ​    console.log('success');​
  7. ​}catch (err){    // err 为前面返回的错误信息​
  8. ​    console.log(err);​
  9. ​    console.log('failed');​
  10. ​}​
  11. ​// test error!​
  12. ​// failed​

通常在 ​​try...catch​​​后还有一个 ​​finally​​​语句块,用于不论前面是否有报错,都会执行 ​​finally​​语句:

  1. ​try{​
  2. ​    // do something​
  3. ​}catch(err){​
  4. ​    // do something​
  5. ​}finally{​
  6. ​    // do something​
  7. ​}​

​try...catch​​常常也用在做网络请求的情况下:

  1. ​function getData (){​
  2. ​    try{​
  3. ​        let a = fetch(url);​
  4. ​    }catch(err){​
  5. ​        console.log(err);​
  6. ​    }​
  7. ​}​

参考资料

1.MDN 流程控制与错误处理


【JS】121-重温基础:流程控制和错误处理_错误信息_02



标签:语句,do,err,JS,try,121,something,catch,错误处理
From: https://blog.51cto.com/u_11887782/5891159

相关文章

  • 【JS】120-重温基础:语法和数据类型
    最近开始把精力放在重新复习JavaScript的基础知识上面,不再太追求各种花枝招展的前端框架,框架再多,适合实际项目才是最重要。上星期在掘金发布了几篇文章,其中最大块算是 【复......
  • 【JS】126-重温基础:时间对象
    本文是 重温基础 系列文章的第七篇。今日感受:做好自律。本章节复习的是JS中的时间对象,一些处理的方法。前置知识:JavaScript中的时间是以1970年1月1日00:00:00以来的毫秒......
  • 【JS】123-重温基础:函数
    本文是 重温基础 系列文章的第四篇。今日感受:常怀感恩之心,对人对己。本章节复习的是JS中的基础组件之一,函数,用来复用特定执行逻辑。1.定义函数定义函数有两种方法:函数声......
  • nodejs中buffer 和 stream
    nodeJS中的buffer(缓冲区):https://juejin.cn/post/7056337343304695839  JavaScript语言没有二进制数据类型,如果需要处理tcp流、视频、音频必须使用buffer来处理二进......
  • Could not freeze ./src/web3/address.js: Cannot read property 'hash' of undefine
    问题运行项目的时候,经常会有一大片错误Couldnotfreeze./src/web3/address.js:Cannotreadproperty'hash'ofundefinedHardSourceWebpackPlugin是webpack的插......
  • 【JS】165-JavaScript设计模式——工厂模式
    二、工厂模式(FactoryPattern)1.概念介绍工厂模式的目的在于创建对象,实现下列目标:可重复执行,来创建相似对象;当编译时位置具体类型(类)时,为调用者提供一种创建对象的接口;通过......
  • 【JS】164-JavaScript设计模式——单体模式
    一、单体模式(SingletonPattern)1.概念介绍单体模式(SingletonPattern)的思想在于保证一个特定类仅有一个实例,即不管使用这个类创建多少个新对象,都会得到与第一次创建的对......
  • 【正则】223-JS常用正则表达式备忘录
    ​翻译自RegexCheatSheet(https://dev.to/emmawedekind/regex-cheat-sheet-2j2a)翻译:前端小智整理编辑:SegmentFault正则表达式或“regex”用于匹配字符串的各个部分,下面是作......
  • JavaWeb项目实战一(Servlet+Jsp项目项目搭建及登录界面)
    之前JavaWeb学的不是太好,准备从下边列的三个发展阶段,每个阶段以项目形式去补充基础JavaWeb发展阶段:Servlet+JspSSM:SpringMVC+Spring+MyBatis其实在中间阶段还存在......
  • EF Core | Passing navigation properties in JSON body to API controller as POST r
    EFCore|PassingnavigationpropertiesinJSONbodytoAPIcontrollerasPOSTrequestHere'stheofficialdocsonavoidinggraphcyclesinJSON:learn.micros......