【重温基础】2.流程控制和错误处理

简介: 【重温基础】2.流程控制和错误处理


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

系列目录:

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

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

var a = 1;
{
    var a = 2;
}
a; // 2

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

let a = 1;
{
    let a = 2;
}
a;  // 1

1.条件判断语句

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

if...else语句

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

if(condition){
    // do something
}else{
    // else 为可选
    // do something
}

False等效值:

在JS中下面的值常常被计算为false

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

注意:

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

let a = new Boolean(false);  // Boolean {true}
if (a);         //  永真
if (a == true); // 永假 

2.switch语句

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

switch ( 'leo' ){
    case 'pingan':
        // do something
        break;   // 可选
    case 'leo':
        // do something
        break;
    default:  // 都不匹配 则执行默认
        // do something
        break;
}

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

3.异常处理语句

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

throw语句:

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

throw "error !";
throw 404;
throw {msg: 'err'};

try...catch语句:

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

function f(){
    throw 'test error!'
}
try{
    f();
    console.log('success');
}catch (err){    // err 为前面返回的错误信息
    console.log(err);
    console.log('failed');
}
// test error!
// failed

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

try{
    // do something
}catch(err){
    // do something
}finally{
    // do something
}

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

function getData (){
    try{
        let a = fetch(url);
    }catch(err){
        console.log(err);
    }
}

参考资料

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


本部分内容到这结束

Author 王平安
E-mail pingan8787@qq.com
博 客 www.pingan8787.com
微 信 pingan8787
每日文章推荐 github.com/pingan8787/…
JS小册 js.pingan8787.com


目录
相关文章
|
弹性计算 Linux 数据库
快速用Discuz搭建论坛网站教程
Discuz! 是全球成熟度最高、覆盖率最大的论坛网站软件系统之一,被200多万网站用户使用,本文教你一步一步快速用阿里云免费的Discuz官方系统搭建论坛网站。
45974 0
|
存储 人工智能 Shell
在 CloudShell 中开发部署人工智能计算
Cloud Shell 正式集成 Jupyter Notebook 和 FastGPU,您可以在 Cloud Shell 中随时随地在线使用 Jupyter Notebook + FastGPU,方便快速的开发人工智能计算,并一键将人工智能计算构建在阿里云的 IAAS 资源上。
4850 156
在 CloudShell 中开发部署人工智能计算
|
开发框架 安全 Java
JBoss中间件漏洞总结
一.Jboss简介 Jboss是一个基于J2EE的开放源代码的应用服务器。JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。 默认端口:8080
1397 118
|
机器学习/深度学习 人工智能 自然语言处理
深度学习与CV教程(13) | 目标检测 (SSD,YOLO系列)
本文讲解一阶段(one stage)的目标检测方法,包括 YOLO 系列算法(V1~V5)、SSD、RetinaNet的算法思想、网络结构、训练细节和性能效果等【对应 CS231n Lecture 11】
1816 1
深度学习与CV教程(13) | 目标检测 (SSD,YOLO系列)
|
缓存 前端开发 JavaScript
入门兵器谱,测试相关软件系列——Fiddler抓包工具使用教程
Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。
887 0
入门兵器谱,测试相关软件系列——Fiddler抓包工具使用教程
|
Web App开发 应用服务中间件 Linux
freeswitch使用sip集成网页电话,nginx配置https协议
文章目录 网页集成软电话 配置freeswitch开启wss nginx配置自签名https域名 页面集成软电话开发 网页集成软电话 网页集成软电话需要使用https协议,页面与freeswitch平台建立websocket长连接。使用jssip库进行相关开发
1852 0
|
消息中间件 存储 Java
MQ是如何保证消息不丢失的,你这样回答面试官一定说I Want U
MQ是如何保证消息不丢失的,你这样回答面试官一定说I Want U
1784 0
MQ是如何保证消息不丢失的,你这样回答面试官一定说I Want U
|
算法 区块链
【区块链之菜鸟入门】亲,你淘的区块链到了!
本文是我为大家分享的区块链技术文章系列中的第一部分【区块链之菜鸟入门】的第一篇,这篇文章咱们先抛开技术细节,用漫画的形式撩开神秘面纱,和大家聊一聊到底区块链是个啥?
149956 1
|
Arthas 监控 IDE
手把手教你实现热更新功能,带你了解 Arthas 热更新背后的原理
一天下午正在摸鱼的时候,测试小姐姐走了过来求助,说是需要改动测试环境 mock 应用。但是这个应用一时半会又找不到源代码存在何处。但是测试小姐姐的活还是一定要帮,突然想起了 Arthas 可以热更新应用代码,按照网上的步骤,反编译应用代码,加上需要改动的逻辑,最后热更新成功。对此,测试小姐姐很满意,并表示下次会少提 Bug。 嘿嘿,以前一直对热更新背后原理很好奇,借着这个机会,研究一下热更新的原理。
1117 0
手把手教你实现热更新功能,带你了解 Arthas 热更新背后的原理
|
JavaScript 前端开发 数据格式
(超详细)spring-boot+layui实现根据条件查询+异步加载分页查询+数据操作
(超详细)spring-boot+layui实现根据条件查询+异步加载分页查询+数据操作
1310 0
(超详细)spring-boot+layui实现根据条件查询+异步加载分页查询+数据操作

热门文章

最新文章