JavaScript在node.js和浏览器之间的语法区别是什么?

6

浏览器支持JavaScript,Node.js也支持它。我想知道它们之间是否有语法差异?


严格来说,语法技术上只是规定令牌如何使用的规则,对于声称自己是ECMAScript的所有内容都应该相同。但是有些人(尤其是那些不熟悉编译器技术的人)也将主要API的典型用法(在更高的层次上)包括在“语法”中。你指的是哪一个? - user395760
3个回答

14

Node使用Google V8引擎,该引擎实现了ECMAScript标准(非官方注释版本链接)

与浏览器的区别取决于所涉及的浏览器(和版本)。


例如,Mozilla浏览器实现了JavaScript(它是ECMAScript的实现和超集)。

JavaScript包括:

  • for each - in循环
  • 析构赋值
  • let表达式
  • 数组推导式

...还有其他增强功能,利用非ECMAScript标准语法。这些都是JavaScript的一部分,但目前不是ECMAScript的一部分。

(在列出的4个项目中,最后3个是下一个ECMAScript版本的提案。)


@Raynos:谢谢,我刚刚发现了那个小错误。 :) - user113716
更具体地说,节点0.4.9-0.4.11使用V8 3.1.8.25。 - Raynos
@patrick_dw:“这些都是JavaScript的一部分”。在这里,您将“JavaScript”指的是Mozilla使用的ECMAScript实现。尽管这是单词JavaScript的正确用法,但大多数人在实际上指的是ECMAScript时会说“JavaScript”。我发现说“JavaScript的一部分”会让人们认为它是ECMAScript的一部分。 - Raynos
@Raynos:关于版本,是的,可以在它们的变更日志中看到各种更新所使用的V8版本(https://github.com/joyent/node/wiki/ChangeLog)。*我相信你已经知道了,但是为了楼主着想。* - user113716
1
@patrick_dw 这个区别值得说明,我建议提到JavaScript是Mozilla的实现,而不是ECMAScript的另一个词。 - Raynos
显示剩余4条评论

8
不。语法完全相同。但是API有所不同。在Node中,标准浏览器DOM不可用,但它具有额外的API,可在nodejs.org找到。任何语法差异都是由于浏览器中的怪癖引起的。

1
不。语法完全相同,但你所使用的环境不同 - 例如,没有DOM,而是提供了文件系统访问和套接字的API。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接