eval()和eval ``之间的差异(带倒勾号)



所以我遇到了一个奇怪的问题,我在任何地方都找不到答案,而且没有太多关于eval在传递字符串文本时会做什么的文档。

如果我做eval("alert(1)"),我会得到一个带1的警报框,然而,当我做eval`alert(1)`时,我只得到一个带有"alert(1("的数组,我不确定它来自哪里,难道不应该像前面的例子一样对待它吗?

另外,eval`${1}`返回一个包含两个空元素的数组,为什么?

您遇到的是与标记模板有关的问题。

从本质上讲,您正在进行字符串插值,并使用一个函数来决定如何创建字符串。第一个参数应该是包含所有字符串部分(${var}声明之间的所有部分(的Array。以这种方式使用的任何函数的返回都应该是字符串。您看到2个条目的原因是,除了试图使用标记函数创建的格式外,此函数还返回一个原始格式。

最新更新