Node JS 防止值未定义崩溃

我有一个由用户确定的值,一旦输入该值,它就会检查 data.json 文件中该值的对应值。问题是如果用户输入值没有相应的值,代码就会崩溃。


var rdata = fs.readFileSync("data.json")

var data = JSON.parse(rdata)

let name = (val[0]) //val[0] is the value that user enters

console.log(data[name].value)

如果 data.json 中没有对应的 data[name],代码就会崩溃。如何防止 undefined data[name].value 导致代码崩溃?


console.log(data[name].value)

                       ^


TypeError: Cannot read property 'name' of undefined


慕哥6287543
浏览 142回答 2
2回答

犯罪嫌疑人X

有多种方法,正如您从其他人的各种建议中看到的那样,这取决于您想要完成什么以及您的代码在做什么。||如果提供的输入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);}注意:如果您不确定什么是最好的方法,那么如果您能为我们提供更多代码和上下文将会很有用,这样我们就可以在确定处理此问题的最佳方法之前了解如何以及何时分配值.看起来您正试图在用户有机会输入之前访问用户的输入数据,在这种情况下,重构您的代码会更好。

喵喵时光机

您可以用于||短路评估const data = {  'def.txt': {    name: 'def'  }}console.log((data['abc.txt'] || {}).name)console.log((data['def.txt'] || {}).name)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript