Javascript/NodeJS:(()=> 0)===(()=> 0)

SPR*_*BRN 3 javascript ubuntu node.js

我正在阅读JavascriptAllongé,在其中我看到这个代码应该返回false:

(() => 0) === (() => 0)
Run Code Online (Sandbox Code Playgroud)

当我使用Nodejs在命令行(Ubuntu 14.04)上运行它时,我得到三个点:...之后我使用CTRL-C取消.

我用以下命令启动node.js : nodejs,不是node.使用--harmony并没有什么区别.

Node.js版本:v0.10.25

为什么我没有得到结果?我想过使用Nodejs作为命令行测试工具,但也许这不是一个好主意?

Jos*_*eam 6

关于为什么返回的简单答案false是因为即使函数执行相同的操作并且看起来相同,它们也会在两个不同的内存位置初始化(对于像函数,普通对象和数组这样的对象,严格相等运算符会===检查内存该对象的位置.)

此外,如果您要使用Node.js,您必须确保它将其解释为ECMAScript6(否则,() => 0它不是有效的ES5,这是Node.js的默认值).

你可以使用这个--harmony标志:

node --harmony app.js
Run Code Online (Sandbox Code Playgroud)

看到这个问题"做node --harmony什么?" 有关在Node.js中使用ES6的更多信息 顶部答案的简短引用:

似乎和谐可以在语言中实现新的ECMA功能.你的文件无法在没有和谐的情况下运行的原因是因为app.js可能正在使用来自新ECMA标准的非向后兼容功能(如块作用域,代理,集合,地图等)

要解释为什么你可能会看到这三个点,请看这个问题:

所以基本上,你在一个交互式终端中打开节点,然后键入节点example.js,所以它试图运行它就好像它是JavaScript一样.它显示了三个点,因为它不是有效的JavaScript代码,它等待您输入可能使其有效的更多代码.

产量

以上是我的输出.这是我在终端上运行的(使用0.12.21):

> $ node --harmony
> (() => 0) === (() => 0)
> false
Run Code Online (Sandbox Code Playgroud)