程序测试
ts
function add(a: number, b?: number | null): number {
if (b == undefined) {
console.log("b is empty")
}
if (!b) {
console.log("b is empty x")
}
if (b == null) {
console.log("b is empty y")
}
let c = b ?? 0;
let d = b!;
console.log(d);
console.log(c);
let x = c + a;
console.log(x)
return x;
}
测试
在nodejs环境进行测试,都没有奔溃问题
- 可选参数不传
add(1)
// 控制台打印
// b is empty
// b is empty x
// b is empty y
// undefined
// 0
// 1 - 传undefined
add(1, undefined)
// 控制台打印
// b is empty
// b is empty x
// b is empty y
// undefined
// 0
// 1 - 传null
// b is empty
// b is empty x
// b is empty y
// null
// 0
// 1
总结,上面三种情况都不管是判空,判undefine或者是判非可以匹配到。