踩坑记:01

154 阅读1分钟

踩坑记:01

  • 在try中return Promise.reject()不会触发catch,await Promise.reject()会
  • createHashRouter的basename会被拼到 hash 而不是 path 中
  • try...catch...finally中finally的return会覆盖前两者的return或throw,即使前两者执行了return或throw,finally块也会执行。

以下代码中无论入参是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);
}