Home >Web Front-end >JS Tutorial >Why Does `console.log`1 Output `[\'1\', raw: Array[1]]` in JavaScript?
Unveiling the Enigma of Backticks: Calling Functions in JavaScript
In the realm of JavaScript, the humble backticks (…) hold a mysterious power, capable of invoking functions seamlessly. Yet, this phenomenon can leave even seasoned developers puzzled. Why does the code console.log1` result in an unexpected output like "console.log1`nVM12380:2 ["1", raw: Array[1]]"?
The answer lies in the concept of Tagged Templates, an intriguing feature introduced in ES-6. Tagged templates allow developers to tag template strings with functions, enabling them to perform operations on the parsed values of those strings.
In our example, the backticks (…) tag the literal string "1" with the console.log function. Just like any other function, the tagged function receives the parsed values of the template string, which are the string itself and an array containing its raw value.
Tagged functions like console.log can process the string template before it's output. In this case, the function merely prints the array it receives, resulting in the output we observe.
Babel, a popular JavaScript transpiler, transforms Tagged Template code into a more ES-5-compatible form. In our case, the following code is generated:
var _taggedTemplateLiteralLoose = function (strings, raw) { strings.raw = raw; return strings; }; console.log(_taggedTemplateLiteralLoose(["1"], ["1"]));
The _taggedTemplateLiteralLoose function returns the tagged template, which is then passed to console.log. This explains why the array ["1", raw: Array[1]] is printed in the console.
So, the backticks' power lies in their ability to facilitate Tagged Templates, a mechanism that enables functions to process and enhance the strings they are tagged with, opening up a world of possibilities in JavaScript programming.
The above is the detailed content of Why Does `console.log`1 Output `[\'1\', raw: Array[1]]` in JavaScript?. For more information, please follow other related articles on the PHP Chinese website!