如何将0传递给TypeScript可选参数?

时间:2019-03-21 02:50:34

标签: javascript typescript optional-parameters

以下功能将输出“ null”

function foo(x?: number): void {
  alert(x || null);
}

foo(0);

我知道0 == null为假,所以该打印0吗?

3 个答案:

答案 0 :(得分:2)

//逻辑与运算

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

因此我们可以得出结论,警报将显示

答案 1 :(得分:1)

将支票从(x || null)更改为x !== null ? x : null

0是虚假的,但不等于null

答案 2 :(得分:0)

如果您要确保x的默认值应为null,则如果未传递任何内容,则可以这样做

function foo(x: number | null = null): void {
  alert(x);
}

foo(0);