踩坑记: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);
}