我想從具有數字或未定義范圍的值中獲取第一個數字值。
顯然,這對于 0 來說是錯誤的,這是錯誤的。回傳 this 的邏輯運算式是什么?
type Nomber = number | undefined
function a_or_b_or_c_number_value_including_zero(a: Nomber, b: Nomber, c: Nomber) {
return (a || b || c)
}
const test = (a: Nomber, b: Nomber, c: Nomber, expected: any) => {
let got = a_or_b_or_c_number_value_including_zero(a, b, c)
if (got !== expected) {
console.log([a, b, c], 'fail', got, expected)
}
}
test(1, 2, 3, 1)
test(undefined, 1, 2, 1)
test(0, 1, 2, 0)
test(undefined, 0, 2, 0)
uj5u.com熱心網友回復:
您可以使用nullish 合并運算子來檢查它。
根據MDN:
空值合并運算子 (
??)是一個邏輯運算子,當其左側運算元為nullor時回傳其右側運算元undefined,否則回傳其左側運算元。
這可以在您的代碼中使用,如下所示。
function a_or_b_or_c_number_value_including_zero(a: Nomber, b: Nomber, c: Nomber) {
return (a ?? b ?? c); // Modified
}
這將使代碼按照您想要的方式作業,這不會0等于false.
基本上,代碼是這樣作業的:
| 代碼 | 描述 |
|---|---|
a ?? |
如果a不是null或undefined,請使用a。 |
b ?? c |
如果b是null或undefined,使用c,否則,使用b。 |
總之,nullish 合并運算子是一個有用的功能,不0等于""(false同時||將這些值評估為false)。
uj5u.com熱心網友回復:
使用?? 代替||
function a_or_b_or_c_number_value_including_zero(a: Nomber, b: Nomber, c: Nomber) {
return (a ?? b ?? c)
}
uj5u.com熱心網友回復:
您可以使用Nullish 合并運算子 (??)來解決 0 因虛假而失敗的問題。
uj5u.com熱心網友回復:
您可以利用剩余引數來撰寫一個接受任意數量值并回傳第一個未定義值的函式:
type Nomber = number | undefined
function getFirstNumber(...values: Nomber[]) {
for(let value of values){
if (value !== undefined) return value;
}
return undefined;
}
你可以在這里看到一個演示
uj5u.com熱心網友回復:
使用 rest 引數 spread with ,以及如果未找到匹配項Array.find將回傳的空值合并運算子。false
const test = (...args) => args.find(v => v !== undefined) ?? false
console.log(test(1, 2, 3, 1))
console.log(test(undefined, 1, 2, 1))
console.log(test(0, 1, 2, 0))
console.log(test(undefined, 0, 2, 0))
console.log(test())
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/463206.html
標籤:javascript
