$(document).ready(function(){
createForm("text,password",".content");
});
function createForm(types,object){
typ = types.split(',');
//var source = "";
$.each(typ,function(){
switch(this) {
case "text":
console.log('text');
break;
default:
console.log('default');
break;
}
});
//$(object).html(source);
}
我在控制台中有这段代码,它返回 2xdefaults。为什么?
我尝试将每种类型的输入作为文本或密码返回,但我的开关无法识别“类型”
原文由 kraYz 发布,翻译遵循 CC BY-SA 4.0 许可协议
您看到此行为的原因是
this
在each
调用中是String
对象实例,而不是字符串基元。 JavaScript 两者都有。在switch
语句中,与案例的比较是通过===
,而字符串 实例 不是===
到字符串 _原语_。修复它的三种方法:
$.each
传递的参数(每个字符串 — 作为原始 — 将作为第二个参数提供):for
循环)。旁注:您因未声明
typ
变量而陷入 隐式全局 变量的恐惧。