节点docs中的这个`... $ {...} ...`代码是什么意思?

时间:2016-03-19 22:28:18

标签: javascript node.js ecmascript-6 template-strings template-literals

我要一次尝试一步学习Express库和Node.js。首先,我要看的是Node reqiure(moduleName)函数的具体细节。

我为此查看了the documentation,并在示例文档中找到了一些奇怪的代码:

const circle = require('./circle.js');
console.log( `The area of a circle of radius 4 is ${circle.area(4)}`);

更具体地说是${circle.area(4)}位。

根据我的理解,JavaScript中的$就像任何其他变量一样。当我们在客户端Web开发中使用它时,它被用作文档功能的委托(我认为)。使用节点时分配了什么?

最重要的是,这种语法是什么意思? ${circle.area(4)}

如果$只是对某个功能someFunction()的引用,则不等同于此someFunction(){cirle.area(4)}。我没有看到这可能是有效的语法。

另外,为什么他们不直接直接调用circle.area()函数呢?

1 个答案:

答案 0 :(得分:12)

此:

`The area of a circle of radius 4 is ${circle.area(4)}`

ES2015 template strings的一个例子。

它将circle.area(4)直接表示的任何内容直接插入到字符串中。如果您对这个或其他ES2015功能感到好奇,我建议您查看Babel并在REPL中玩游戏。

Here's a very simple example让你开始。

您可以看到此ES2015代码:

const foo = 'some text';
console.log(`${foo} is interpolated.`);

被转换为ES5等价物 - 一个简单的+串联:

var foo = 'some text';
console.log(foo + ' is interpolated.');