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

Why cant I use c++ syntax on Node.JS terminal?

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

例如,V8是一个实现ECMAScript的JavaScript引擎。No.js本身是一个C++程序,它告诉V8引擎使用它的函数。因此,这些函数是编写C++代码的,因此这个应用程序应该能够接受C++本地语法。意思是,如果我要在C语言的终端中输入C++代码,那么这个终端应该能够把这些语法传递给内核中的C++模块并成功输出。但相反,它给出了一个:

1
2
3
4
5
6
7
8
9
10
11
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. (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++的基础上编写的。


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

1
2
3
4
5
6
7
8
9
10
#include <iostream>

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

节点和V8是用C++编写的,但它们的工作是解释JavaScript代码。它们不会运行任何C++代码,就像C++编译器不会编译任何JavaScript代码一样。