当前位置: 首页 > 面试题库 >

是否可以在JavaScript中创建自定义运算符?

解河
2023-03-14
问题内容

在数学课上,我们学习了如何定义新的运算符。例如:

(ℝ, ∘), x ∘ y = x + 2y

这定义了法律。对于x和y的任何实数,x y是x + 2y。

范例:2 ∘ 2 = 2 + 4 = 6

可以在JavaScript中定义这样的运算符吗?我知道函数可以胜任:

function foo (x, y) { return x + 2 * y; }

但我想使用以下语法:

var y = 2 ∘ 2; // returns 6

代替这个:

var y = foo(2, 2);

哪个是最接近这个问题的解决方案


问题答案:

最简洁的答案是不。ECMAScript(标准JS所基于的)不支持运算符重载。

可以使用sweet.js之类的第三方工具来添加自定义运算符,尽管这需要额外的编译步骤。



 类似资料:
  • 问题内容: 我有一些需要经常打印的结构。现在,我正在围绕该结构使用经典的打印包装器: 此功能很方便,但实际上也很有限。如果不进行新包装,则无法添加或添加一些文本。我知道我可以使用 va_arg 系列添加或添加一些文本,但是我觉得我会重新实现。 我想知道是否有可能向printf编写自定义函数。我希望能够写这样的东西: 这可能吗 ?我怎样才能做到这一点 ? 注意:我在Ubuntu Linux 10.0

  • 问题内容: 我需要做的就是在当前函数执行结束时执行一个回调函数。 此功能的使用者应如下所示: 我该如何实施? 问题答案: 实际上,您的代码将按原样工作,只需将回调声明为参数即可,您可以使用参数名称直接调用它。 基础知识 那会叫,这会叫,这会提醒“东西在这里”。 请注意,传递函数 引用 ()而不是调用函数并传递其结果()非常重要。在您的问题中,您可以正确执行此操作,但是值得指出,因为这是一个常见错误

  • 我想清除大部分别名定义的PowerShell会话,除了cd、sort、mkdir等常见别名 完成会话后,我希望恢复所有以前已知的别名。 无需卸载模块或注销CmdLets。我只想为我的会话清除别名命名空间。 我可以在如下列表中指定允许的别名: 如何保存和恢复别名? 或 如何启动一个干净的PoSh并只加载基本别名? 以下几行来自我的示例模块。 用法示例: 不幸的是,dir Alias:在调用我的脚本后

  • 问题内容: 具体来说,我想创建一个Array类,并希望重载[]​​运算符。 问题答案: 如果您正在使用PHP5(应该如此),请查看SPL ArrayObject 类。文档不是太好,但是我认为如果扩展ArrayObject,您将拥有“假”数组。 编辑:这是我的简单示例;恐怕我没有有价值的用例:

  • 问题内容: 例如,假设我想“提取” 为三个单独的变量,例如: 我该怎么做,而忽略了 “为什么要这么做呢?” 您可能会被问到这个问题。 之前已经多次问过类似的问题,但是从未给出真正的答案,因为OP真正需要的是使用不同的方法。很好,但这有可能吗? 我看过反射,似乎没有任何方法可以使我甚至向实例添加额外的字段,更不用说动态创建本地了。 问题答案: 是否可以在Java运行时创建变量? 简单回答是不。 Ja

  • 让我们假设我有一个实体类Foo,它包含一些字段、getter、setter和构造函数。例如: 然后我想知道a或b何时改变。我知道javaFX中有一个ObjectProperty。所以我要创建对象属性: 然后,为了了解a和b字段的更改,我添加了ChangeListener: 然后进行实验: 工作正常,但下一行: 不调用侦听器。原因很清楚。最后一行实际上没有更改Foo对象(引用保持不变)。 我有一些可