2013-10-09 112 views
2

問題是否有使用if/else語句

更多出於好奇替代,但我想知道如何重構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] 

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

我理解這個問題也許停業或搬遷的,由於模糊性

+0

什麼是顏色? – njzk2

+0

我不知道多態性在這裏是否有用,但它看起來像汽車可以在它的原型上使用getColor方法獲得它自己的構造函數。 –

+0

這就是所謂的「速記」,你可以在這裏閱讀一些JavaScript簡寫,http://www.jquery4u。com/javascript/shorthand-javascript-techniques /:) – thinklinux

回答

1

? :經營者正是, 「更清潔」 的if-else

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

classify = (input < 0) ? "negative" : "positive"; 

此外還有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 
} 

多態性是一個抽象概念,而不是一種寫作聲明的方式。這是創建一個方法/函數/類/等,其中類型至少是SOMEWHAT模糊的做法。因此,如果饋送給參數1的整數,相同的方法可以返回結果,就像您將數組饋送到相同的參數一樣。

+0

謝謝你的詳細解答和澄清多態性。 – mikedidthis

5

您可以使用三元運算符,其語法是condition ? result1 : result2;

return cars[0].color === 'red' ? colors[0] : colors[1] 
1

有一個ternar運營商?大多采用當你不希望使用if-else聲明:

example: function() { 
    var cars = [{color:'red',reg:'111'},{color:'blue',reg:'666'}]; 

    return cars[0].color === 'red' ? cars[0] : cars[1]; 
    } 
2

只是爲了好玩:

// red  -> +false -> 0 
// not red -> +true -> 1 
return cars[+(cars[0].color !== 'red')]; 
+1

哈哈很好......我花了10秒才明白它:D – thinklinux

+0

如果我接受了笑聲/趣味因素,這將是答案。 :D – mikedidthis

+1

它不僅僅有趣,它也可以工作:D – leaf

1

談到汽車到一個對象:

function Car(options) { 
    this.options = {}; 
    // Some default options for your object 
    $.extend(this.options, { 
     color: "green", 
     buildYear: 1990, 
     tires: 4, 
     brand: "merceded" 
    }, options); 
} 

// A method registered on the prototype 
Car.prototype.getColor = function() { 
    return this.options.color; 
}; 

var myToyota = new Car({ 
    brand: "toyota" 
}); 

console.log("My Toyota is: "+ myToyota.getColor()); 

示例:http://jsfiddle.net/YthH8/

請記住,有很多方法可以在JavaScript中使用對象/繼承。
咖啡腳本有自己的語法糖使用類=>http://coffeescript.org/#classes

+0

感謝您的回答。我相信我的問題仍然存在,因爲我必須看到測試紅色的顏色是否正確? – mikedidthis

+0

你是對的,我忽略了,我會擴大我的答案 –