踩坑记:01

121 阅读1分钟

踩坑记:01

  • tryreturn Promise.reject()不会触发catchawait Promise.reject()
  • createHashRouterbasename会被拼到 hash 而不是 path 中
  • try...catch...finallyfinallyreturn会覆盖前两者的returnthrow,即使前两者执行了returnthrowfinally块也会执行。

以下代码中无论入参是true还是false函数始终返回1

function testFx(isErr: boolean) {
  try {
    console.log("try block is called");
    if (!isErr) return 100;
    throw new Error();
  } catch {
    console.log("catch block is called");
    return 1000;
  } finally {
    console.log("finally block is called");
    return 1;
  }
}
testFx(false);
/**
 * try block is called
 * finally block is called
 * returns 1
 */
testFx(true);
/**
 * try block is called
 * catch block is called
 * finally block is called
 * returns 1
 */

  • 函数内部若依赖于一些外部变量,那么函数提升可能会带来一些问题
testFx();// ReferenceError:Cannot access 'a' before initialization
const a = "xxxx";
function testFx() {
  console.log("a", a);
}