Javascript eval() 函数名数组化执行字符串函数

js eval 200 19/03/2020

Javascript eval()

某些情况下,传递函数名之后,接收的不是函数而是函数名的字符串类型。

eval() 方法—用来执行字符串代表的 javascript 代码,如果传递的不是字符串的话,会直接返回传值,而非调用。



    function test(str){ 
        alert(str); 
    } 
    //如果param是值;
    eval('test("param")'); 
    //如果param是变量;
    var param = 'B';
    eval('test(param)'); //会查找名为param的变量,如果找不到会抛出异常
    


字符串数组函数名函数

默认执行一个js函数会有指定函数名,如果想同时执行多个相同函数但又不同内容的时候,需要将相应函数使用 js 的 eval() 转换为字符串函数后再执行


    var arr = ['funcA(str)','funcB(str)'];  //定义数组函数名
    //遍历数组函数
    for(var i=0;i《arr.length;i++){
        let arrFunc = "function "+arr[i]+"{ alert(str); }";
        eval(arrFunc);
    };