跳转至

基础

JavaScript 指南 | MDN (mozilla.org)

需要学习

  1. 闭包
    1. 全局
    2. 作用域
  2. 异步
    1. setTimeOutsetInterval
    2. AJAX
    3. Promise
    4. asyncawait
    5. 异步机制
  3. 线程机制
  4. TypeScript

作用域

变量

新的 JavaScript 中不建议用 var 了,暂不表,只说 letconst

letconst 都是提供局部作用域,比方说:

if (true) {
  let x = 1;
}
console.log(x);  // 会出错因为 x 是局部的,只在上面的 if 中有用

函数

只有这样定义的函数才会有函数提升:

f()  // 可以执行因为有变量提升

function f () {
  console.log('Hi')
}

异常处理

try {
  console.log('try');
  throw 'error';
} catch (e) {
  console.log('catch', e);
} finally {
  console.log('finally');
}

输出:

try
catch error
finally
throw 'error';
throw Error('Error');  // 直接 Error 是没有问题的
throw new Error('Error');  // 有没有 new 都是一样的
throw Error;  // 这个不行,括号还是要有的,但是语法上没问题,理论上可以 throw 任何东西
throw {firstName: 'Shao', lastName: 'Wang'};  // 对象也行
throw 12;

try {
  throw 'Error';
} catch (e) {
  typeof e;  // 'string'
  e instanceof Error;  // false
}

try {
   throw Error('Error');
} catch (e) {
   typeof e;  // 'object'
   e instanceof Error;  // true
}