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

Javascript/NodeJS:(()=>;0)==(()=>;0),javascript,node.js,ubuntu,Javascript,Node.js,Ubuntu,我正在阅读,在其中我看到了应该返回false的代码: (() => 0) === (() => 0) 当我使用Nodejs在命令行(ubuntu14.04)上运行它时,我得到三个点:…,然后我使用CTRL-C取消 我使用以下命令启动node.js:nodejs,而不是node。使用--harmony没有什么区别 Node.js版本:v0.10.25 为什么我得不到结果呢?我曾考虑过使用Nodejs作为命令行测试工具,但这可能不是一个好主意 关于为什么is返回false的简单答案是,

我正在阅读,在其中我看到了应该返回false的代码:

(() => 0) === (() => 0)
当我使用Nodejs在命令行(ubuntu14.04)上运行它时,我得到三个点:
,然后我使用CTRL-C取消

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

Node.js版本:v0.10.25


为什么我得不到结果呢?我曾考虑过使用Nodejs作为命令行测试工具,但这可能不是一个好主意

关于为什么is返回
false
的简单答案是,即使函数做相同的事情并且看起来相同,它们也在两个不同的内存位置初始化(对于函数、普通对象和数组等对象,严格相等运算符
==
检查该对象的内存位置。)

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

您可以使用
--harmony
标志:

node --harmony app.js
有关在Node.js中使用ES6的更多信息,请参见本文。最上面答案的简短引述:

harmony似乎在语言中启用了新的ECMA功能。原因 如果没有harmony,您的文件将无法运行,因为app.js可能是 使用新ECMA标准中的非向后兼容功能 (如块范围、代理、集合、映射等)

要解释为什么会看到这三个点,请参见:

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

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

删除节点:

sudo apt-get remove nodejs
安装(节点版本管理器)。检查Github页面以获取最新版本,并在那里复制正确的命令。这适用于NVM版本0.25.4:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.4/install.sh | bash
注销、登录和
nvm
应该可以工作。然后安装所需的node.js版本,可以选择相邻安装多个版本:

nvm install 0.12.5
完成后,可以使用“和谐”选项启动节点:

node --harmony
现在,以下代码应返回
false

(() => 0) === (() => 0)

您正在使用
--harmony
标志运行它吗?您正在尝试使用新的第6版语法,而不使用
--harmony
标志来让节点执行此操作。您使用的是哪个版本的NodeJ?在这种情况下,
--harmony
可能重复@SPRBRN。该版本不支持该语法。安装后,使用
--harmony
标志,它应该可以正常工作。@Shashank,我的答案是我运行的是哪个版本的Node:
0.12.21
。谢谢,我更新到Node v0.12.4,成功了:)+1我在Ubuntu上,命令
Node
不起作用。我必须使用
nodejs
,而使用
nodejs--harmony
没有什么区别。两者都会产生三个点。但在我的Mac电脑上,它的工作方式与这里描述的一样。
(() => 0) === (() => 0)