【重温基础】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...elseswitch

if...else语句

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

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

False等效值

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

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

注意

不要使用原始布尔值truefalse 与 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


目录
相关文章
|
SQL 监控 关系型数据库
【MYSQL高级】Mysql找出执行慢的SQL【慢查询日志使用与分析】
【MYSQL高级】Mysql找出执行慢的SQL【慢查询日志使用与分析】
4885 0
|
数据采集 Python
在Python中进行数据清洗和预处理缺失值处理缺失数据剔除
在Python中进行数据清洗和预处理缺失值处理缺失数据剔除
326 4
|
SQL 关系型数据库 MySQL
深入理解MySQL事务特性:保证数据完整性与一致性
深入理解MySQL事务特性:保证数据完整性与一致性
1777 1
|
存储 安全 关系型数据库
4个MySQL优化工具AWR,帮你准确定位数据库瓶颈!
4个MySQL优化工具AWR,帮你准确定位数据库瓶颈!
684 0
|
机器学习/深度学习
深度学习相关概念:权重初始化
权重初始化(weight initialization)又称参数初始化,在深度学习模型训练过程的本质是对weight(即参数 W)进行更新,但是在最开始训练的时候是无法更新的,这需要每个参数有相应的初始值。在进行权重初始化后,神经网络就可以对权重参数w不停地迭代更新,以达到较好的性能
780 0
|
Oracle 关系型数据库
【Oracle】sqlplus 复制数据文件时出现拒绝访问
【Oracle】sqlplus 复制数据文件时出现拒绝访问
|
JavaScript Cloud Native Go
Error: Cannot find module ‘webpack/bin/config-yargs‘ at Function.Module._resolveFilename (intern
Error: Cannot find module ‘webpack/bin/config-yargs‘ at Function.Module._resolveFilename (intern
159 0
|
人工智能 编译器 C语言
十万个C语言冷知识
十万个C语言冷知识
213 0
|
安全 开发者
MJRefresh源码分析
MJRefresh源码分析
218 0
MJRefresh源码分析
|
存储 消息中间件 Kafka
Flink Broadcast State实用指南
从1.5.0开始,Flink提供了一种新的State类型,称为Broadcast State。在这篇文章中,我们将解释什么是Broadcast State,并展示如何将其应用于评估事件流上的动态模式的应用的示例。
6320 0