如何将表达式传递给 JavaScript 函数

Posted

技术标签:

【中文标题】如何将表达式传递给 JavaScript 函数【英文标题】:How to pass an expression into JavaScript function 【发布时间】:2019-12-13 17:59:46 【问题描述】:

我有 2 个类对象:let a, let b,每个对象都有一个键“值”。 我希望能够创建第三个对象let c 并计算它的“值”键,如下所示:c.value = a.value + b.value。 问题来了:

ab 的值发生变化时,我需要let c 的值发生变化。 let c 可能是具有关键“依赖关系”的不同类,我在其中传递等式的参数,然后在每次 dependency.value 更改时更新 c.value 的函数。但是我仍然应该能够传递诸如“+”、“-”、“*”等符号。

代码示例:

class Data
    name: string;
    value: number;

  constructor(name, value)
      this.name = name;
      this.value = value;
  

class Calc
    name: string;
    value: number;
    dependencies: Array<object>;

  constructor(name, dep)
    this.name = name;
    this.dependencies = dep;
  

let a = new Data('a', 10)
let b = new Data('a', 7)

let c = new Calc('c', [a, b])

而且我需要能够将像 c.value = a.value - b.value * d.value 这样的完整表达式传递给对象,以使其灵活。

如何在 javascript 中完成?提前谢谢你。

【问题讨论】:

您正在使用的代码的具体示例将大大阐明问题 猜测一下,Proxy 可能会有所帮助 - 尽管我不能 100% 确定您的最后陈述 - 如上所述,即使它必须是伪代码,更好地描述您的目标可能会有所帮助 可能类似于使c 成为一个类和value 一个getter,它会在您每次访问它时计算值。通常,不,您不能“将表达式分配给变量”。 看看How to Build Your Own Reactivity System 您可以查看 rxJs 的观察者模式。这样你可以监听值的变化并动态添加依赖 【参考方案1】:

我们可以通过以下方式将表达式作为参数传递给函数。

function calculation(expression)
 if(expression == '+')
    var output = 40 + 50;
 else if(expression == '-')
    var output = 40 - 50;
 
 console.log(output);

calculation('+');

【讨论】:

以上是关于如何将表达式传递给 JavaScript 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JSF 托管 bean 属性传递给 JavaScript 函数?

如何将表单输入值传递给 JavaScript 函数

Javascript:如何将其他变量传递给promise .catch函数

如何使用cefsharp将输入传递给javascript函数

如何将剃刀视图模式属性值传递给 javascript 函数

如何将 PHP 字符串传递给 Javascript 函数调用? [复制]