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

时间:2015-08-17 23:55:37

标签: javascript coding-style

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

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

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

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

是的,绝对是

正如许多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 :(得分:1)

如果在if语句之外没有使用if语句,请在female=vector() for (i in 1 : length (sna.list.1)) set.vertex.attribute(sna.list.1[[i]],"Female",alter.list.1bis[[i][,"NIDemo1_c4"]) 语句中。

答案 3 :(得分:1)

将它放在if语句中。特别是如果变量赋值是昂贵的,因为它永远不会被使用,除非满足if语句。