【问题标题】:Declaring a variable then changing it with an if statement?声明一个变量然后用 if 语句改变它?
【发布时间】:2015-11-16 22:34:12
【问题描述】:

在函数中声明变量时是否需要添加if/else语句?我可以先设置变量,然后在满足条件时更改它吗?

function doSomething() {
  var a = 1;
  if(something) {
    a = 2;
  }
}

function doSomething() {
  var a;
  if(something) {
    a = 2;
  } else {
    a = 1;
  }
}

【问题讨论】:

  • 换个问题:为什么不会起作用?机器所做的一切都是你告诉它的——当你尝试它时发生了什么?
  • (不相关,但有些人建议使用条件运算符(“三元”)但是......嗯。尤其是在开始时,IMO 一个简单的if 语句就足够了。)
  • 它们似乎都可以正常工作 - 我只是想知道两次设置变量是否有任何性能影响或未来问题 - 一次在初始化时,如果条件为真,则再次。

标签: javascript variables if-statement


【解决方案1】:

是的,您可以这样做(技术上)。关于理解或代码复杂度,尽量保持简单。

如果你使用条件运算符,我认为你的意图会更清楚:

var a = something ? 2 : 1;

【讨论】:

    【解决方案2】:

    不,没有必要,只要评估初始化中的第二个值没有副作用(在您的情况下,文字 1,它没有)。

    但是,使用 if-else 可能会更好地表达您的意图并使代码更简洁;虽然这更多的是风格问题而不是功能问题。就我个人而言,我什至更喜欢条件表达式:

    var a = condition ? 2 : 1;
    

    【讨论】:

      【解决方案3】:

      是的,你可以这样做 - 像这样更短

      var a = 1;
      if (something) a = 2;
      

      【讨论】:

      • 当然,你不应该省略大括号! (如果要写在一行,写if (something) { a = 2; }。)
      • 没有理由总是将块放在大括号中。除非在非常特殊的情况下,否则我永远不会将语句与 if 放在同一行。
      • @blm 如果你把它放在同一行,你可能应该使用花括号;缩进卫生差和“但我的意思是在条件代码中”是all太容易了。特别适合初学者。
      • @blm There are plenty of reasons. 从技术上讲也没有理由使用任何换行符,但我们这样做是为了维护我们的程序。
      • (不过我没有投反对票;显示选项没有错。)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-04
      • 2018-04-15
      • 2022-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多