if语句许多值检查同一源,而不重复源

时间:2019-07-10 23:32:25

标签: javascript

if(document.getElementById('TheId').value (>=5 && <=6))
{
//code here
}

代替:

if(document.getElementById('TheId').value >=5 && document.getElementById('TheId').value <=6)
{
//code here
}

这可以吗? ,为什么他们不让这种情况变得如此简单,因为它指向同一来源,包含任何信息?

1 个答案:

答案 0 :(得分:1)

条件 可以这样轻松地编写,您只需要首先将值提取到另一个变量即可。另外,由于.value返回一个 string ,因此您可能想先将其强制转换为数字,以免发生意外情况:

const value = Number(document.getElementById('TheId'));
if (value >= 5 && value <= 6) {
  // do something
}

如果您想将它们全部放在if括号内,则可以 ,但是看起来真的很丑,因为您必须使用直观的逗号运算符:

if ((value = Number(document.getElementById('TheId')), (value >= 5 && value <= 6)) {
  // do something
}

(最好事先将值放入变量中)

我想另一种方法是定义两个用于测试该值的函数,并检查every其中一个函数在传递值时是否通过:

if (
  [val => val >= 5, val => val <= 6]
    .every(
      test => test(Number(document.getElementById('TheId'))
    )
  )
{
  // do something
}

但是将值预先放入变量中更有意义。