function confirm_to_func(func, txt,func_parm1,func_parm2) {
art.dialog({
title:"确认执行该操作",
content : txt,
icon : "question",
lock : "true",
window : "top",
ok : function() {
eval(func+'(func_parm1,func_parm2)');
eval(func+'('+func_parm1+','+func_parm2+')');
},
cancel : function() {
}
});
}
如上代码所示我觉得 eval(func+'('+func_parm1+','+func_parm2+')');这种写法应该给是对的。也就是拼起来。结果这种运行不了。
而eval(func+'(func_parm1,func_parm2)'); 这个却运行起来了。为什么?
其中的func_parm1,func_parm2是作为变量传进来的。在逗号作用下不就变成了一个string类型值为‘func_parm1’的字符串了吗?为 了更好看清我的问题附个图
我现在好像明白是怎么回事了,假如
第2种写法会让eval执行"
"。而eval会把class_enable和5gfgdfg5当成变量(因为没加引号)。
而第二种如果改成
即参数加上引号,
eval最后接收到的参数是。
能够正常运行。即change参数加上引号就不会在把class_enable和5gfgdfg5当做变量。(我是这么理解的)
字符串模板:(${func_parml},${func_parm2})
怎么看不见字符串模板的符号 ``
@心悠魂然: 这样是让接收到的参数强制转为字符串?
@非高非帅非富二代: 可以这样理解吧,你百度一下,es6字符串模板
@心悠魂然: 谢谢。
参数func是字符串吗
是字符串
我现在好像明白是怎么回事了,假如
func=“change”;func_parm1=class_enable;func_parm2="5gfgdfg5";
第2种写法会让eval执行"
change(class_enable,5gfgdfg5)
"。而eval会把class_enable和5gfgdfg5当成变量(因为没加引号)。
而第二种如果改成
eval(func+'("'+func_parm1+'","'+func_parm2+'")');
即参数加上引号,
eval最后接收到的参数是。
change(“class_enable“,“5gfgdfg5“)
能够正常运行。即change参数加上引号就不会在把class_enable和5gfgdfg5当做变量。(我是这么理解的)
.....