javascript - 为什么以及何时我们在 JavaScript 中使用对象解构?

标签 javascript ecmascript-6 destructuring

我见过很多这样的代码:

navigator.geolocation.getCurrentPosition(
       ({coords}) => {
         const {latitude, longitude} = coords
         this.setState({
           position: {
             latitude,
             longitude,
           },
           region: {
             latitude,
             longitude,
             latitudeDelta: 0.005,
             longitudeDelta: 0.001,
           }
         })
       },
       (error) => alert('Error: Are location services on?'),
       {enableHighAccuracy: true}
     );

我的问题是我们为什么以及何时在参数中使用对象解构。

为什么coords使用对象解构,而error不使用它?

最佳答案

这就是 JS 中的对象。我建议您阅读更多有关对象的内容。

但这是一个简单的例子。

const car = {door: "blue", tires: 4}. 

当然,您可以像 car.door 一样使用它来获得 blue,或使用 car.tires 来获得 4。但您可以看到您在各处编写相同的代码car.。最好执行以下操作:

const {door, tires} = car

然后在其他地方,您可以简单地做轮胎。这完全取决于个人喜好。我使用它是因为它简单易懂,并且重复代码较少。没有好坏之分。

就您为什么 error 不需要解构来说,是因为我们只是检查 error 是否存在。这与您所写的相同:

(error) => alert('something') 

(Boolean(error)) => alert('something').

在这里你甚至不关心error里面有什么,你只想知道是否有error。这就是为什么您不需要解构。

如果您想获取error中的某些项目,假设codeerror的键之一。然后你就可以这样做

({code}) => alert(code)

关于javascript - 为什么以及何时我们在 JavaScript 中使用对象解构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51508799/

相关文章:

javascript - 在 React 中使用索引作为键而不是 Math.random() 更好吗?

javascript - webpack 与 uglify 结合 sass 加载器会出错,否则工作正常

javascript - 使用带连字符的键解构对象

javascript - ES6 解构具有相同属性名称的两个对象

javascript - 同时具有两种不同的传单弹出样式

javascript - 单击错误/正确答案时更改按钮的颜色

javascript - 在 session ID 上下文中使用 javascript 登录

javascript - 在 Typescript 中如何设置一个新类作为原型(prototype)?

javascript - 嵌套对象中的 ES6 默认参数

javascript - 如何解构存储为状态值的对象