解构赋值与使用整个对象——性能如何?

Destructuring assignment vs using whole object - what about performance?

解构赋值(在我的情况下使用 Vue 可组合项)是否有任何性能 gain/tradeoff?

例如,我有一个组件显示在 vue-i18n 中选择的当前语言。

我可以通过解构来做到这一点:

<template>
  <span>locale: {{ locale }}</span>
</template>

<script setup>
  import { useI18n } from 'vue-i18n'
  const { locale } = useI18n()
</script>

或者使用整个对象(函数?)

<template>
  <span>locale: {{ i18n.locale.value }}</span>
</template>

<script setup>
  import { useI18n } from 'vue-i18n'
  const i18n = useI18n()
</script>

其他库或自定义可组合项(如状态管理)也是如此。在所有教程或示例中,有时会使用第一个选项,有时会使用第二个选项。这只是固执己见的偏好,还是实际上一个比另一个更好?

不,解构对性能没有显着影响。它实际上只是语法糖,使代码更加简洁和可读。

编辑:我要补充一点,您通常不应该像这样担心核心语言功能的性能。担心哪种数据结构最适合特定用例,不要担心 syntax 表现最好。如果您的编码能力或多或少,那么性能优化应该是一个相当不常见的练习,而不是您的首要考虑。代码的可读性和可维护性,只有当你注意到它是一个问题或碰巧知道它很关键时才担心性能。

访问对象属性在 JS 中几乎不需要任何时间。在解构过程中这样做一次,或者在模板中多次这样做都无关紧要。

所以这只是一个偏好问题 - 以及您在模板中使用的同一对象的属性数量的问题(您的示例只使用一个,但如果使用多个,则有一个单独的 const 每一个基德都不必要地使代码膨胀)

解构的想法只是使用相关值而不是长点符号。 性能我不认为,但如果你想在值不存在时进行故障安全检查,这很有用。 如果不解构,另一种方法是 obj?.prp1?.prp2