这个开关返回undefined的任何特殊原因?

时间:2015-10-05 13:05:22

标签: javascript switch-statement

我是JS的新手,我一直在努力工作,因为我有空闲时间。我在线阅读手册几分钟之后就编写了以下代码,所以请不要怪我。

var doctype = document.type;
var n = doctype.indexOf("}") + 1;
var doctype2 = doctype.substring(n);
switch (doctype2) {
    case "doc_func_adm":
        var newtype = "documento-admissao-funcionario";
        switch (document.properties["ext1:tipo_doc_func_adm"]) {
            case "Contrato Experiência":
                var newtype2 = "contrato-experiencia";
                break;
            case "Prorrogação de Contrato":
                var newtype2 = "prorrogacao-contrato";
                break;
            case "Contrato: Prazo Indeterminado":
                var newtype2 = "contrato-prazo-indeterminado";
                break;
            case "Termo Bolsa Família":
                var newtype2 = "termo-bolsa-familia";
                break;
            case "Vale Transporte":
                var newtype2 = "vale-transporte";
                break;
            case "Ficha Registro":
                var newtype2 = "ficha-registro";
                break;
        } 
   break;
 }
 print(newtype + "-" + newtype2);
 print(doctype2); //check string result being tested

控制台结果:

 undefined-undefined
 doc_func_adm

请注意'doctype2'与交换机测试具有相同的字符串。 正如你所看到的,它只返回未定义的值,我相信我遗漏了一些我看不到的非常基本的东西。

感谢您的帮助。欢呼声。

1 个答案:

答案 0 :(得分:0)

我原本以为你的问题就是范围,但在阅读了@JohnnyMopp原帖的评论后,并在scope of javascript variables上查看了这个链接 - 我想问题就在这里:

 var doctype2 = doctype.substring(n);

  switch (doctype2) {
     case "doc_func_adm": 
      var newtype = "documento-admissao-funcionario";

我认为 doctype2 不会遇到“doc_func_adm”的情况;

如果这种情况至少发生一次,变量newtype将包含“documento-admissao-funcionario”,并且不会被定义。