为什么我不能在Node.JS终端上使用c ++语法?

时间:2016-06-09 12:10:31

标签: javascript c++ node.js v8

我一直想知道为什么我不能在Node.js终端上使用C ++语法。

例如,V8是一个实现ECMAScript的JavaScript引擎。 Node.js本身就是一个C ++程序,它告诉V8引擎使用它的功能。所以这些函数是用C ++代码编写的,因此这个应用程序应该能够采用C ++本机语法。这意味着如果我要在Node.js终端中键入C ++代码,那么Node.js终端应该能够将这些语法传递给Node.js核心中的C ++模块并成功输出。但相反,它给出了:

SyntaxError: Unexpected identifier
at Object.exports.createScript (vm.js:24:10)
at REPLServer.defaultEval (repl.js:236:25)
at bound (domain.js:280:14)
at REPLServer.runBound [as eval] (domain.js:293:12)
at REPLServer.<anonymous> (repl.js:441:10)
at emitOne (events.js:101:20)
at REPLServer.emit (events.js:188:7)
at REPLServer.Interface._onLine (readline.js:224:10)
at REPLServer.Interface._line (readline.js:566:8)
at REPLServer.Interface._ttyWrite (readline.js:843:14)

我只是在寻找一个清晰的解释,虽然Node.js是在C ++之上编写的,但是这两种语言是如何抽象的。

2 个答案:

答案 0 :(得分:6)

仅仅因为程序是用C ++编写的,并不意味着它可以解释C ++代码。你希望这个程序在运行时理解C ++代码吗?

#include <iostream>

int main()
{
    std::string line;
    while (std::getline(std::cin, line)) {
        std::cout << line << '\n';
    }
}

答案 1 :(得分:4)

Node和V8是用C ++编写的,但他们的工作是解释Javascript代码。他们不会运行任何C ++代码,就像C ++编译器不能编译任何Javascript代码一样。