Javascript 将导入的函数与eval一起使用

Javascript 将导入的函数与eval一起使用,javascript,express,ecmascript-6,eval,ecmascript-2016,Javascript,Express,Ecmascript 6,Eval,Ecmascript 2016,我这样调用函数: import {required, maxLength} from 'utils/validation'; import sitesForm from './sites.json'; import productForm from './product.json'; var validateSite = {}; for(var group in sitesForm ) { var groupObj = sitesForm[group]; for(var el

我这样调用函数:

import {required, maxLength} from 'utils/validation';
import sitesForm from './sites.json';
import productForm from './product.json';

var validateSite = {};
for(var group in sitesForm ) {
    var groupObj = sitesForm[group];
    for(var el in groupObj ) {
        console.log(eval('required'))
        validateSite[groupObj[el].name] = groupObj[el].rules.map(eval)
    }
}

//utils/validation.js
export function required(value) {
  if (isEmpty(value)) {
    return 'Champs requis';
  }
}
我得到一个错误,表示未定义required,在我的json中,我得到了以下规则数组: “规则”:[“必需”]

但是,代码中的console.log(必需)显示:[函数:必需]


您知道为什么不能将eval与required一起使用吗?

如果您只想调用命名函数,应该使用索引器表示法:

import validators from 'utils/validation';

validateSite[groupObj[el].name] = groupObj[el].rules.map(s => validators[s])

不要使用
eval
。你想做什么?是的,
eval
将返回内部代码的结果
eval('required')
required
基本相同,
required
是一个函数。您应该做的是
eval('required()')
,但实际上您应该跳过
eval
!-<代码>必需()。你为什么需要它?哦,那太好了,它的工作原理是这样的:从“utils/validation”导入*作为验证器;然后我调用了这个validateSite[groupObj[el].name]=groupObj[el].rules.map(s=>validators[s]),谢谢