【问题标题】:Use imported function with eval将导入的函数与 eval 一起使用
【发布时间】:2016-06-30 14:18:33
【问题描述】:

我这样调用函数:

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(required) 显示:[Function: required]

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

【问题讨论】:

  • 不要使用eval。你想做什么?
  • 好吧,eval 将返回内部代码的结果。 eval('required')required基本相同,required是一个函数。你应该做的是eval('required()'),但真的你应该跳过eval! -required()。为什么需要它?

标签: javascript express ecmascript-6 eval ecmascript-2016


【解决方案1】:

如果你只想调用命名函数,你应该使用索引符号:

import validators from 'utils/validation';

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

【讨论】:

  • 哦,太好了,它的工作原理是这样的: import * as validators from 'utils/validation';然后我称之为 validateSite[groupObj[el].name] = groupObj[el].rules.map(s => validators[s]) 谢谢
猜你喜欢
  • 1970-01-01
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多