Javascript eval()中使用的参数应该是字符串吗?

Javascript eval()中使用的参数应该是字符串吗?,javascript,Javascript,我正在编写代码,为表单创建简单的验证器 为了动态验证表单,我计划使用eval函数 正如您在javascript编码中看到的,var funcCall变成了一个函数名,参数为jquery selected dom 但这是错误的。未捕获的语法错误:意外的标识符 我想知道的是,我应该只在eval中使用String,还是有更好的方法 如果可以使用函数指针,则不应使用eval: function emptyCheckFilter(x){} // array contains the functions,

我正在编写代码,为表单创建简单的验证器

为了动态验证表单,我计划使用eval函数

正如您在javascript编码中看到的,var funcCall变成了一个函数名,参数为jquery selected dom

但这是错误的。未捕获的语法错误:意外的标识符

我想知道的是,我应该只在eval中使用String,还是有更好的方法


如果可以使用函数指针,则不应使用eval:

function emptyCheckFilter(x){}

// array contains the functions, not just their names

var filters = [emptyCheckFilter];  

for(var i = 0; i < filters.length; i++) {
    // call the functions, without using eval
    filters[i](value);
}

您不应该为此使用eval。直接使用函数实例而不是它们的名称更简单、更简洁

var Submit = {
    validateFilters : [function(element) {
        //this is filter to validate if it's empty or not.
        console.log("this has been called");
    }], // This is validator filters
    doValidate : function(form) {
        var children = $(form).children();
        var filters = Submit.validateFilters;

        $.each(children, function(key, value) { // Loop over form element

            for(var i = 0; i < filters.length; i++) {
                filters[i](value);
            }

            return false; 
        });
    },
   ...
}

您的问题是,eval中使用的参数应该是字符串吗

语法

评估

参数

表示JavaScript表达式、语句或语句序列的字符串。表达式可以包含现有对象的变量和属性


代码中有一个无对的花括号。行emptyCheckFilter:functionelement缺少一个…此代码将不会执行。澄清:您不能在创建Submit的同时引用它。我将Submit.emptyCheckFilter放入数组中,但无法读取未定义的属性“emptyCheckFilter”
var Submit = {
    validateFilters : [function(element) {
        //this is filter to validate if it's empty or not.
        console.log("this has been called");
    }], // This is validator filters
    doValidate : function(form) {
        var children = $(form).children();
        var filters = Submit.validateFilters;

        $.each(children, function(key, value) { // Loop over form element

            for(var i = 0; i < filters.length; i++) {
                filters[i](value);
            }

            return false; 
        });
    },
   ...
}