gpt4 book ai didi

javascript - "saving"变量有什么原因吗?

转载 作者:行者123 更新时间:2023-11-28 11:50:26 25 4
gpt4 key购买 nike

我有一个同事曾经写过的这个函数:

setSentence: function (e) {
this.setState({
issueText: e.target.value
});

if (this.refs.messages.textContent.length > 0 && e.target.value.length > 2) {
this.refs.messages.textContent = '';
}
},

他在代码中的两个位置使用了 e.target.value。我倾向于做这样的事情:

let textBoxContent = e.target.value;

然后使用具有更具描述性名称的变量。

我曾经和他谈过这些避免变数的事情。他只是说他要“保存变量”。

想更改这些代码片段,但我仍然不确定......

所以我的问题是:

“保存变量”分别避免代码中的变量有意义吗?

最佳答案

一遍又一遍地重复冗长的代码时“保存变量”并不经济。对我来说,这绝对属于DRY (Don't Repeat Yourself)类别.

Javascript 解释器针对快速访问局部变量进行了非常优化。当引用变量时,首先查找的作用域是局部作用域,因此会立即找到它,因此,并且因为没有外部访问局部变量,所以使用它们的函数内的代码可以得到很好的优化好吧。

最后,这可能是个人编码偏好。

我个人的规则是,如果我有一些多步骤引用,例如 e.target.value 并且我在一个函数中多次使用它,那么我将创建一个有意义的命名局部变量并将其分配给它,这样我就可以在多个位置使用局部变量,并避免一遍又一遍地重复相同的多步骤属性引用(DRY 的教科书示例)。

这肯定也使代码更易于阅读,因为您有一个有意义的变量名称,而且因为它只是一个简单的变量,而不是具有通用名称的多步骤属性引用。虽然,从技术上讲,它可能是用于局部变量赋值的额外一行代码,但它节省了大量重复的属性查找,因此理论上,将最终值保存到 textBoxContent 中应该更快,而不是每次都必须进行解释器查找e.target.value

<小时/>

此外,您永远不应该爱上那些在第一次编写常规代码时想要对其进行微优化的人。像这样的优化通常只需要应用于所有代码的 0.000001%,并且只有在您准确证明性能瓶颈在哪里之后。而且,即便如此,您也必须在目标环境中设计多个基准,以证明什么实际上使事情变得更快(而不是使用一个人的意见 - 仅测量)。

在此之前,在任何人考虑微优化之前,您的所有代码首先应该正确、清晰、可读、可维护、可扩展、DRY、适当的性能以及大约 10 个其他优先事项。如果您将上述优先级应用于您所询问的情况,并且在上下文中多次引用局部变量,则您始终会决定将e.target.value分配给局部变量。

关于javascript - "saving"变量有什么原因吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38474092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com