如何将 0 传递给 TypeScript 可选参数?
How to pass 0 to TypeScript optional parameters?
下面的函数打印出"null"
function foo(x?: number): void {
alert(x || null);
}
foo(0);
我知道 0==null 是错误的,所以这不应该打印 0 吗?
将检查从 (x || null)
更改为 x !== null ? x : null
因为 0
是假的但不等于 null
如果您试图确保 x
的默认值应该是 null
,如果没有传递任何内容,那么您可以这样做
function foo(x: number | null = null): void {
alert(x);
}
foo(0);
//逻辑与运算
true && true; // Result=>true
true && false; // Result=>false
false && true; // Result=>false
false && false; // Result=>false
//逻辑或运算
true || true; // Result=>true
true || false; // Result=>true
false || true; // Result=>true
false || false; // Result=>false
您的警报代码基于以下规则:
false || true; // Result=>true
false || false; // Result=>false
或者,
false || any_data; // Result=> any_data
false || any_data; // Result=> any_data
更多说明:
alert( 1 || 0 ); // 1 (1 is truthy)
alert( true || 'no matter what' ); // (true is truthy)
alert( null || 1 ); // 1 (1 is the first truthy value)
alert( null || 0 || 1 ); // 1 (the first truthy value)
alert( undefined || null || 0 ); // 0 (all falsy, returns the last value)
所以当 x=0 时,这意味着 x 在布尔上下文中为假,
x || null //Result=>null
所以我们可以得出结论 alert 将显示 null
下面的函数打印出"null"
function foo(x?: number): void {
alert(x || null);
}
foo(0);
我知道 0==null 是错误的,所以这不应该打印 0 吗?
将检查从 (x || null)
更改为 x !== null ? x : null
因为 0
是假的但不等于 null
如果您试图确保 x
的默认值应该是 null
,如果没有传递任何内容,那么您可以这样做
function foo(x: number | null = null): void {
alert(x);
}
foo(0);
//逻辑与运算
true && true; // Result=>true
true && false; // Result=>false
false && true; // Result=>false
false && false; // Result=>false
//逻辑或运算
true || true; // Result=>true
true || false; // Result=>true
false || true; // Result=>true
false || false; // Result=>false
您的警报代码基于以下规则:
false || true; // Result=>true
false || false; // Result=>false
或者,
false || any_data; // Result=> any_data
false || any_data; // Result=> any_data
更多说明:
alert( 1 || 0 ); // 1 (1 is truthy)
alert( true || 'no matter what' ); // (true is truthy)
alert( null || 1 ); // 1 (1 is the first truthy value)
alert( null || 0 || 1 ); // 1 (the first truthy value)
alert( undefined || null || 0 ); // 0 (all falsy, returns the last value)
所以当 x=0 时,这意味着 x 在布尔上下文中为假,
x || null //Result=>null
所以我们可以得出结论 alert 将显示 null