首页 新闻 搜索 专区 学院

js如何使用传入的变量做为将要调用的函数名以及参数?

0
[已解决问题] 解决于 2018-09-08 13:27

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’的字符串了吗?为 了更好看清我的问题附个图

js
非高非帅非富二代的主页 非高非帅非富二代 | 菜鸟二级 | 园豆:206
提问于:2018-08-31 15:52
< >
分享
最佳答案
0

我现在好像明白是怎么回事了,假如

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当做变量。(我是这么理解的)

非高非帅非富二代 | 菜鸟二级 |园豆:206 | 2018-09-03 09:56
其他回答(3)
0

字符串模板:(${func_parml},${func_parm2})

心悠魂然 | 园豆:2147 (老鸟四级) | 2018-08-31 16:30

怎么看不见字符串模板的符号 ``

支持(0) 反对(0) 心悠魂然 | 园豆:2147 (老鸟四级) | 2018-08-31 16:34

@心悠魂然: 这样是让接收到的参数强制转为字符串?

支持(0) 反对(0) 非高非帅非富二代 | 园豆:206 (菜鸟二级) | 2018-09-01 09:27

@非高非帅非富二代: 可以这样理解吧,你百度一下,es6字符串模板

支持(0) 反对(0) 心悠魂然 | 园豆:2147 (老鸟四级) | 2018-09-01 12:43

@心悠魂然: 谢谢。

支持(0) 反对(0) 非高非帅非富二代 | 园豆:206 (菜鸟二级) | 2018-09-03 09:55
0

参数func是字符串吗

jello chen | 园豆:7096 (大侠五级) | 2018-08-31 19:34

是字符串

支持(0) 反对(0) 非高非帅非富二代 | 园豆:206 (菜鸟二级) | 2018-09-01 09:12

我现在好像明白是怎么回事了,假如

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当做变量。(我是这么理解的)

支持(0) 反对(0) 非高非帅非富二代 | 园豆:206 (菜鸟二级) | 2018-09-01 09:27
0

.....

K1nney | 园豆:202 (菜鸟二级) | 2019-05-16 13:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册