以下功能将输出“ null”
function foo(x?: number): void {
alert(x || null);
}
foo(0);
我知道0 == null为假,所以该打印0吗?
答案 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);