我应该将变量放在 if 条件中吗?

Should I put variables inside an if conditional?

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

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

  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;
    }
  }

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

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

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

是的,绝对

如许多 JavaScript 风格指南所述:


Airbnb JavaScript Style Guide() {

13.4 Assign variables where you need them, but place them in a reasonable place.
Why? let and const are block scoped and not function scoped.

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
  }
}