亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

短路評估并將 true 或 false 分配給變量

短路評估并將 true 或 false 分配給變量

慕森卡 2023-10-14 16:45:01
我有以下預配置const preloadedConfig = {   "configA": null, // either true, false or null is allowed};然后我在頁面加載時進行以下初始化let finalConfig = preloadedConfig.configA || true;場景:預加載配置中的屬性可以根據用戶的偏好更改為true、false或null我希望使用短路評估來確定用戶對頁面加載的選擇。如果用戶未提供任何選項(null),則默認選項為 true我的問題:基于從這里摘錄的以下內容:Falsy 值是那些在布爾上下文中使用時強制為 false 的值,它們是 0、null、未定義、空字符串、NaN,當然還有 false。評估如下:true >> evaluted true // oknull >> evaluted true // okfalse >> evaluted true // the problem area如果用戶提供false的配置選項,則最終評估值將始終為 true,因為它是“假值”。如果提供的值為 false,我期望的結果是布爾值false。在使用短路評估并允許 3 種類型的輸入值null、true 或 false 的同時,我應該怎么做才能使這項工作正常進行?
查看完整描述

3 回答

?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

您可以改用nullish 合并運算符。

let?finalConfig?=?preloadedConfig.configA????true;

或者,您可以使用hasOwnProperty支票。

let?finalConfig?=?preloadedConfig.hasOwnProperty('configA')???preloadedConfig.configA?:?true;



查看完整回答
反對 回復 2023-10-14
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

在現代環境中(或使用轉譯器),我會使用空合并運算符,僅當左側為空或未定義時,該運算符才采用右側:

let finalConfig = preloadedConfig.configA ?? true;

否則,使用條件運算符:

let finalConfig = preloadedConfig.configA == null ? true : preloadedConfig.configA;


查看完整回答
反對 回復 2023-10-14
?
FFIVE

TA貢獻1797條經驗 獲得超6個贊

您可以通過使用舊的 Object.assign 或現代的 destruct ... 屬性來使默認規則更好一些。


即使為 null,這也會覆蓋 configA


const yourConfig = {

    configA: true,

    ...preloadedConfig

}

使用舊的環境會是


Obejct.assign({configA: true},preloadedConfig)

編輯:


將空值作為默認值是


const yourConfig = {

    configA: true,

    ...Object.fromEntries(Object.entries(preloadedConfig).filter(([key,val])=>val!==null))

}


查看完整回答
反對 回復 2023-10-14
  • 3 回答
  • 0 關注
  • 184 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號