【问题标题】:Should I put variables inside an if conditional?我应该将变量放在 if 条件中吗?
【发布时间】:2015-08-17 23:55:36
【问题描述】:

我想知道,根据良好实践,在这种情况下放置变量最方便的方法是什么:

如果你有一个函数,它的内容只有在条件语句为真时才会被执行,你会把变量放在哪里?

  addMessage (text) {
    let lastMessage = React.findDOMNode(this.refs.messages);
    if (text.length) {
      ChatActions.addMessage(text);
      lastMessage.scrollTop = lastMessage.scrollHeight;
    }
  }

或者像这样:

  addMessage (text) {
    if (text.length) {
      let lastMessage = React.findDOMNode(this.refs.messages);
      ChatActions.addMessage(text);
      lastMessage.scrollTop = lastMessage.scrollHeight;
    }
  }

【问题讨论】:

  • 我认为技巧是可以的,只要它们不是错误。如果他们加快速度,这是一个很好的做法。

标签: javascript coding-style


【解决方案1】:

是的,当然

正如许多 JavaScript 样式指南中所述:


Airbnb JavaScript Style Guide() {

13.4 在需要的地方分配变量,但将它们放在合理的位置。
为什么? let 和 const 是块作用域,而不是函数作用域。

Principles of Writing Consistent, Idiomatic JavaScript

// 2.B.1.4
// const and let, from ECMAScript 6, should likewise be at the top of their scope (block).

// Bad
function foo() {
  let foo,
    bar;
  if ( condition ) {
    bar = "";
    // statements
  }
}
// Good
function foo() {
  let foo;
  if ( condition ) {
    let bar = "";
    // statements
  }
}

【讨论】:

    【解决方案2】:

    在 if 语句中。根据您的代码,仅 IF 语句需要 lastMessage 函数 - 因此您应该将其括起来。否则,您每次运行 if 检查时都在执行计算,无论您是否需要它。那会很浪费。

    【讨论】:

      【解决方案3】:

      把它放在 if 语句中。特别是如果变量赋值代价高昂,因为除非满足 if 语句,否则它永远不会被使用。

      【讨论】:

        【解决方案4】:

        如果不在if 语句外使用,则在if 语句内。

        【讨论】:

          猜你喜欢
          • 2021-03-17
          • 2018-12-31
          • 1970-01-01
          • 2017-05-14
          • 1970-01-01
          • 1970-01-01
          • 2014-05-20
          • 2015-01-08
          • 1970-01-01
          相关资源
          最近更新 更多