揭开反引号之谜:在 JavaScript 中调用函数
在 JavaScript 领域,不起眼的反引号 (...) 拥有神秘的力量,能够无缝调用函数。然而,这种现象甚至会让经验丰富的开发人员感到困惑。为什么代码 console.log1` 会导致意外输出,如“console.log1`nVM12380:2 ["1", raw: Array[1]]"?
答案在于 Tagged 的概念模板,ES-6 中引入的一个有趣的功能。标记模板允许开发人员使用函数标记模板字符串,使他们能够对这些字符串的解析值执行操作。
在我们的示例中,反引号 (...) 使用控制台标记文字字符串“1”。日志功能。就像任何其他函数一样,标记函数接收模板字符串的解析值,这些值是字符串本身和包含其原始值的数组。
像 console.log 这样的标记函数可以在字符串模板被解析之前对其进行处理。输出。在这种情况下,该函数仅打印它接收到的数组,从而产生我们观察到的输出。
Babel 是一种流行的 JavaScript 转译器,它将标记模板代码转换为更兼容 ES-5 的形式。在我们的例子中,生成以下代码:
var _taggedTemplateLiteralLoose = function (strings, raw) { strings.raw = raw; return strings; }; console.log(_taggedTemplateLiteralLoose(["1"], ["1"]));
_taggedTemplateLiteralLoose 函数返回标记模板,然后将其传递到 console.log。这解释了为什么数组 ["1", raw: Array[1]] 会打印在控制台中。
因此,反引号的力量在于它们能够促进标记模板,这是一种使函数能够处理并增强它们所标记的字符串,为 JavaScript 编程开辟了一个充满可能性的世界。
以上是为什么`console.log`1在JavaScript中输出`[\'1\', raw: Array[1]]`?的详细内容。更多信息请关注PHP中文网其他相关文章!