Javascript/NodeJS:(()=>;0)==(()=>;0)
我正在阅读,在其中我看到了应该返回false的代码: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的简单答案是,
(() => 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)