是否有使用IF/ELSE语句的替代方法

mik*_*his 2 javascript coffeescript

更多是出于好奇,但我想知道如何将if语句重构为更清晰/更不易碎的东西.从我读过的,多态可能有用吗?

在示例中,我只想返回第一辆车,如果color:'red'是真的话.

CoffeeScript的

example: () ->
    cars = [{color:'red', reg:'111'},{color:'blue', reg:'666'}]
    if cars[0].color is 'red' 
    then cars[0]
    else cars[1]
Run Code Online (Sandbox Code Playgroud)

使用Javascript

  example: function() {
    var cars = [{color:'red',reg:'111'},{color:'blue',reg:'666'}];
    if (cars[0].color === 'red') {
      return cars[0];
    } else {
      return cars[1];
    }
  }
Run Code Online (Sandbox Code Playgroud)

我理解这个问题可能由于模糊性而被关闭或移动

Sat*_*pal 6

你可以使用三元运算符,它的语法是 condition ? result1 : result2;

return cars[0].color === 'red' ? colors[0] : colors[1]
Run Code Online (Sandbox Code Playgroud)


Mik*_* H. 5

?:运算符就是这样,“更干净”的if-else

http://msdn.microsoft.com/en-us/library/ty67wk28.aspx

classify = (input < 0) ? "negative" : "positive";
Run Code Online (Sandbox Code Playgroud)

对于较大的组合,还有switch语句:

http://www.w3schools.com/js/js_switch.asp

switch(n)
{
case 1:
  execute code block 1
  break;
case 2:
  execute code block 2
  break;
default:
  code to be executed if n is different from case 1 and 2
}
Run Code Online (Sandbox Code Playgroud)

多态是一个抽象的概念,而不是一种编写语句的方法。这是创建类型至少为模棱两可的方法/函数/类/等的实践。因此,如果输入相同的方法(例如,为参数1输入一个整数),则可能会返回结果,就像您将数组输入相同的参数一样。