1、
var input = 5; switch (input) { case 10: function fun1() { alert(10); } break; case 5: function fun1() { alert(5); } break; default: function fun1() { alert("default"); } break; }
fun1();//在IE与Chrome上会弹出"default",因为函数的定义在js执行前就已确定了,而ff则不同,是在运行时确定的。从而弹出5
解决方案:函数的定义采用表达式来定义,就可以在运行时来确定。【执行到的时候才编译】
var input = 5,fun1; switch (input) { case 10: fun1 = function() { alert(10); } break; case 5: fun1 = function() { alert(5); } break; default: fun1 = function() { alert("default"); } break; }
2、函数表达式只有当执行到的时候,其才存在,否则是当他不存在的
var fun1 = function fun2() { alert("OK"); } fun1 = function() { alert("fun1"); } fun1(); //fun1 fun2(); //fun2没有定义