JavaScript If / Else和Comparison / Relational Operators

时间:2014-12-02 18:20:17

标签: javascript if-statement operators

这是我的挑战:

  
      
  • 完成canIGet功能。这个功能应该:   
        
    • 有两个论点:   
          
      • 'item'应代表用户想要购买的内容
      •   
      • 'money'应代表用户拥有多少美元
      •   
      • 如果用户可以根据下面的价格表支付给定的商品,则返回'true',否则返回false:   
            
        • 'MacBook Air' - 999美元
        •   
        • 'MacBook Pro' - 1299美元
        •   
        • 'Mac Pro' - 2499美元
        •   
        • 'Apple Sticker' - $ 1
        •   
      •   
      • 如果'item'不在上面的列表apple products
      • 中,则返回'false'   
    •   
  •   

(而不是返回true / false我正在登录到控制台)

我很感激我对错误的解释。

我的代码:

var canIGet = function(item, money){
    if ((money >= 2499) && (item == "Mac Pro" || "Macbook Pro" || "Macbook Air" || "Apple sticker")){
        console.log("You can afford a Mac Pro");
    }
    else if ((2499 > money) && (money >= 1299) && (item == "Macbook Pro" || "Macbook Air" || "Apple sticker")){
        console.log("You can afford a Macbook Pro");
    }
    else if ((1299 > money) && (money >= 999) && (item == "Macbook Air" || "Apple sticker")){
        console.log("You can afford a Macbook Air");
    }
    else if ((999 > money) && (money >= 1) && (item == "Apple sticker")){
        console.log("You can afford a Apple sticker");
    } else {
        console.log("Get a job!");
    }
};
canIGet("Mac Pro", 1500);

1 个答案:

答案 0 :(得分:1)

基本Javascript(以及大多数其他语言):

(item == "Mac Pro" || "Macbook Pro" || "Macbook Air" || "Apple sticker")){

没有针对每个字符串测试item。您正在对字符串进行布尔OR,然后将OR结果与项目进行比较。

e.g。它被解析/执行为

(item == true || true || true || true)
(item == true)
("Sticker" == true)
true

你必须把它写成

if (item == 'Mac Pro') || (item == 'Macbook Pro') || etc...