转换/比较声明问题

时间:2014-11-15 01:55:01

标签: javascript

出于某种原因,我无法获得我的切换声明,我是Javascript的新手,我感觉我的问题更多地与猫的关系=== === "串"'部分而不是开关。

为了这个例子,假设' data.cat'的值。是初学者。

function (data) {
      data = JSON.parse(data);
         if (!data.success) {
            // An error was thrown in the controller
            alert(data.message);
         } else {
             switch (cat = data.cat) { //data.cat is Starters
                 case 0:
                    cat === "Starters";
                    console.log("Test a= " + cat);
                    break;
                 case 1:
                    cat === "Mains";
                    console.log("Test b= " + cat);
                    break;
                 case 2:
                    cat === "Deserts";
                    console.log("Test c= " + cat);
                    break;
                 default:
                    console.log("Shit.." + data.cat);
                    break;
             }
         }
     });

http://jsfiddle.net/76fe9kk7/3/

正如您从小提琴中看到的那样,日志会报告默认值。这是为什么?

2 个答案:

答案 0 :(得分:3)

var cat = "Starters";
switch (cat) {
    case "Starters":
        console.log("Test a= " + cat);
        break;
    case "Mains":
        console.log("Test b= " + cat);
        break;
    case "Deserts":
        console.log("Test c= " + cat);
        break;
    default:
        console.log("Shit.." + cat);
        break;
}

答案 1 :(得分:3)

如果在字符串值上进行切换并且每种情况都需要数值,为什么每次都输入除默认值以外的任何内容?

"为了这个例子,假设' data.cat'的值。是初学者。"

在这种情况下,这意味着switch (cat = data.cat)基本上是在说switch ('Starters')。显然,这将永远属于默认情况。