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

时间:2018-07-24 23:11:44

标签: 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使用对象分解?

1 个答案:

答案 0 :(得分:3)

这全部与JS中的对象有关。我建议您阅读有关对象的更多信息。

但这是一个简单的示例。

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

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

const {door, tires} = car

然后在其他任何地方,您都可以执行doortires。这完全取决于个人喜好。我之所以使用它,是因为它简单易懂,并且重复代码更少。没有好坏。

至于您为何error不需要销毁,是因为我们只是在检查error是否存在。这与您写的内容相同:

(error) => alert('something') 

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

您甚至不关心error内的内容,只是想知道是否存在error。这就是为什么您不需要进行破坏的原因。

如果您想在error中放入一些物品,可以说codeerror的钥匙之一。然后,您可以

({code}) => alert(code)