在本文中,我们将探讨如何在尝试访问可能是未定义或 null 的数据时防止错误,并且我们将介绍您可以使用的方法用于在必要时有效管理数据
。在 JavaScript 中,当尝试访问嵌套对象中的值或函数时,如果结果为 undefined,您的代码可能会引发错误。此错误可能会停止代码的执行。但是,如果使用 可选链接运算符 ,如果值或函数不存在,它将返回 undefined 而不是抛出错误。 这可以防止您的代码崩溃
。
例子
:
const person = { name: 'John', address: { city: 'New York' } }; console.log(person.address?.city); // 'New York' console.log(person.address?.country); // undefined, no errorconst 人 = { 姓名:“约翰”, 地址: { 城市:“纽约” } }; console.log(人.地址?.城市); // '纽约' console.log(人.地址?.国家); // 未定义,没有错误
如果变量的值为null或undefined,为了避免这种情况,可以使用nullish合并
运算符
例子
:
const person = { name: 'John', address: { city: 'New York' } }; console.log(person.address?.city); // 'New York' console.log(person.address?.country); // undefined, no error函数 getconfig(config) { 返回配置?? { 超时:1000,重试:3 }; } 让用户配置=空; 让finalConfig = getConfig(userConfig); // { 超时: 1000, 重试: 3 } 控制台.log(最终配置);
使用 Set 删除重复项
:对于具有重复值的数组,可以使用 set
删除重复值
例子
:
const person = { name: 'John', address: { city: 'New York' } }; console.log(person.address?.city); // 'New York' console.log(person.address?.country); // undefined, no error常量字母= ["a", "b", "c", "c", "a", "d","d",]; const 结果= [...新集合(字母)]; console.log(结果) => ["a", "b", "c", "d"]
使用 WeakSet 防止重复
:由于WeakSet保存了对象的引用,一个对象只能被添加到WeakSet
一次。
例子
:
const person = { name: 'John', address: { city: 'New York' } }; console.log(person.address?.city); // 'New York' console.log(person.address?.country); // undefined, no error// 创建WeakSet constweakset = new WeakSet(); // 定义对象 const personJane = { name: 'jane' }; const personMike = { name: 'mike' }; // 将对象添加到WeakSet中 weakset.add(personJane); weakset.add(personMike); console.log(weakset.has(obj1)); // 真的 console.log(weakset.has(obj2)); // 真的 // 尝试再次添加相同的对象 弱集.add(obj1); // obj1已经存在,不会再次添加 console.log(weakset.has(obj1)); // 真的 console.log(weakset.has(obj2)); // 真的 // 从WeakSet中删除一个对象 删除(obj1); console.log(weakset.has(obj1)); // 错误的 // 再次添加对象 弱集.add(obj1); console.log(weakset.has(obj1)); // 真的
在本文中,我们探讨了一些重要概念,这些概念可以帮助防止在访问可能未定义或为空的值时发生错误,以及在必要时更有效地管理数据
的方法.免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3