switch ... case 好奇怪 求解答

var type2 = null
function up_data(g_name,type_text,m_sales,inventory,price){
    console.log(type_text) 
    switch (type_text){
        case "蛋糕":
            type2 = "cake";
            break;
        case "冰淇淋":
            type2 = "icecream";
            break;
        case "咖啡":
            type2 = "coffee";
            break;
        case "面包":
            console.log("aaa")
            var type2 = "bread";
            break;
       }
    console.log(type2)
    }
    

控制台打印如下:

图片描述

阅读 1.9k
2 个回答

明显面包前面还有不可见字符,左边都没有对齐

因为Javascript里面的变量作用域是函数级别的,没有块级作用域。

当你把最后面包那个case里面的var删掉,你就会发现type2输出是null了。

因为你在函数内有个var,所以函数声明的时候会算作这个函数有私有变量type2,所以不会引用全局变量type2,但是因为你执行的时候,没走到var type2="bread"那一步,导致输出的是undefined。其它的case都走到了,所以就会正常输出

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题