【问题标题】:What is a JavaScript Macro?什么是 JavaScript 宏?
【发布时间】:2014-01-09 18:58:47
【问题描述】:

最近我看到人们谈论在 JavaScript 中使用宏。我不知道这意味着什么,在查找 MDN 上的文档后,我没有任何答案。所以这就引出了我的问题……

什么是 JavaScript 宏?
如何/为什么使用它们?
它是元编程的一种形式吗?

非常感谢您提供示例和示例代码的答案。

【问题讨论】:

  • 也许是这个? sweetjs.org
  • 是这个:sweetjs.org。这是新的,人们开始谈论它:)
  • 可能与任何其他语言中的宏相同。 (诚​​然,这是一个相当广泛的范围,从 C 预处理器宏到简单的 lisp 宏系统,再到现代完全卫生的相分离宏系统。
  • 伙计们,谢谢你们的cmets,但这些不是建设性的答案。请随时留下一个可靠的答案,我很高兴向您捐赠 upboats。

标签: javascript macros


【解决方案1】:

正如已在 cmets 中发布的那样,它是一个用于 javascript 的宏系统。

这是在“预处理阶段”定义文本替换的一种方式。因此,您将定义一个宏并在您的代码中使用它,然后通过 sweet.js 运行它们,输出将是带有文本替换的代码。

example:

macro swap {
  rule { ($a, $b) } => {
    var tmp = $a;
    $a = $b;
    $b = tmp;
  }
}

var a = 10;
var b = 20;

swap (a, b)

通过 sweet.js 运行后,我们得到扩展代码:

var a$1 = 10;
var b$2 = 20;

var tmp$3 = a$1;
a$1 = b$2;
b$2 = tmp$3; 

【讨论】:

  • 与将 swap(x,y) 编码为普通函数相比有什么优势?
  • 在 ES6 之前,您实际上不能swap 编码为 JavaScript 中的普通函数(拼写为 [y, x] = [x, y];
猜你喜欢
  • 1970-01-01
  • 2017-05-15
  • 2016-04-11
  • 2023-04-02
  • 1970-01-01
  • 1970-01-01
  • 2014-12-30
  • 2011-09-28
  • 2019-12-24
相关资源
最近更新 更多