# 流程控制与错误处理MDN

# 条件判断语句

当一个逻辑条件为真,用if语句执行一个语句。当这个条件为假,使用可选择的 else 从句来执行这个语句。if 语句如下所示:

const x = 1;
if(x > 0) {
  //  当条件为真的时候执行
  console.log(x); 
}else {
  //  当条件为假的时候执行
  console.log(x);
}
1
2
3
4
5
6
7
8

# switch 语句

switch 语句允许一个程序求一个表达式的值并且尝试去匹配表达式的值到一个 case 标签。如果匹配成功,这个程序执行相关的语句。switch 语句如下所示:

var day;
switch (new Date().getDay()) {
  case 0:
    day = "星期天";
    break;
  case 1:
    day = "星期一";
     break;
  case 2:
    day = "星期二";
    break;
  case 3:
    day = "星期三";
    break;
  case 4:
    day = "星期四";
    break;
  case 5:
    day = "星期五";
    break;
  case 6:
    day = "星期六";
    break;
  default:
    day = "出错啦~,javaScript也不知道是周几";
} 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

# 异常处理语句

你可以用 throw 语句抛出一个异常并且用 try...catch 语句捕获处理它。

try {
  throw '出错啦' // 抛出异常
}catch(erro) {
  // 捕获到了异常,并进行异常处理
  console.log(erro); // 出错啦
}finally {
  console.log("错误捕获完毕")
}

1
2
3
4
5
6
7
8
9

# Promises

ECMAScript 6开始,JavaScript 增加了对 Promise 对象的支持,它允许你对延时异步操作流进行控制

function imgLoad(url) {
  return new Promise(function(resolve, reject) {
    var request = new XMLHttpRequest();
    request.open('GET', url);
    request.responseType = 'blob';
    request.onload = function() {
      if (request.status === 200) {
        // 请求成功执行的回调
        resolve(request.response);
      } else {
        // 请求失败执行的回调
        reject(Error('Image didn\'t load successfully; error code:'  + request.statusText));
      }
    };
    request.onerror = function() {
      reject(Error('There was a network error.'));
    };
    request.send();
  });
}

const rightUrl = "https://cn.vuejs.org/images/logo.png";
const erroUrl = "test.png";

imgLoad(rightUrl).then(res => {
  console.log("success:", res) // 正确的url执行语句
}).catch(erro => {
  console.log("erro:", erro )// 发生错误时执行语句
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29