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

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

Node JS 防止值未定義崩潰

Node JS 防止值未定義崩潰

慕哥6287543 2023-02-17 16:28:37
我有一個由用戶確定的值,一旦輸入該值,它就會檢查 data.json 文件中該值的對應值。問題是如果用戶輸入值沒有相應的值,代碼就會崩潰。var rdata = fs.readFileSync("data.json")var data = JSON.parse(rdata)let name = (val[0]) //val[0] is the value that user entersconsole.log(data[name].value)如果 data.json 中沒有對應的 data[name],代碼就會崩潰。如何防止 undefined data[name].value 導致代碼崩潰?console.log(data[name].value)                       ^TypeError: Cannot read property 'name' of undefined
查看完整描述

2 回答

?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

有多種方法,正如您從其他人的各種建議中看到的那樣,這取決于您想要完成什么以及您的代碼在做什么。


||如果提供的輸入undefined如下所示,您可以使用 or ( ) 運算符回退到默認/安全值


  let userInput; //undefined`     

  let x = userInput || "a safe value";

本質上,“讓 x 成為 userInput 的任何內容,除非它是undefined(或NaN,,null...)。


同樣,您可以進行if檢查以確保您期望的值可用且有效:


if(userInput){

    //Happy path, userInput is valid.

}

else {

   // Not so happy path,  do something about it to handle the invalid value.

}

try-catch如果你想處理這個案例,你可以使用一個塊。有多種拋出、捕獲和處理錯誤的方法,但如果你想通知用戶他們的輸入無效,你可以這樣做:


try {

     //stuff may happen here

     if(userInput) {

        throw new TypeError("A useful description of why this was thrown");

     }

     //if userInput is value, then continue...

catch(error){

    alert("Oops! Seems like the value you entered is not valid. Error:" + error);

}

注意:如果您不確定什么是最好的方法,那么如果您能為我們提供更多代碼和上下文將會很有用,這樣我們就可以在確定處理此問題的最佳方法之前了解如何以及何時分配值.


看起來您正試圖在用戶有機會輸入之前訪問用戶的輸入數據,在這種情況下,重構您的代碼會更好。


查看完整回答
反對 回復 2023-02-17
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

您可以用于||短路評估

const data = {

  'def.txt': {

    name: 'def'

  }

}



console.log((data['abc.txt'] || {}).name)

console.log((data['def.txt'] || {}).name)


查看完整回答
反對 回復 2023-02-17
  • 2 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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