对于 JavaScript 的思考 | 青训营笔记
现代 JavaScript 标准
在过去的几年里,JavaScript进步很快,我们使用了较新版本的功能。JavaScript标准的官方名称是ECMAScript。目前,最新的版本是2021年6月发布的版本,名称为ECMAScript®2021,又称ES12。
浏览器还不支持JavaScript的所有最新功能。由于这个事实,很多在浏览器中运行的代码都是从较新版本的JavaScript转写成较旧的、更兼容的版本。
JavaScript 的运行
如今,最流行的方式是通过使用Babel进行转码。在用create-react-app创建的React应用中,转译是自动配置的。
Node.js是一个基于Google's Chrome V8JavaScript引擎的JavaScript运行环境,几乎可以在任何地方工作--从服务器到手机应用。最新版本的Node已经能够理解最新版本的JavaScript,所以代码不需要转码。
代码被写入以 .js结尾的文件中,通过键入node nameoffile.js命令来运行。
也可以将JavaScript代码写入Node.js控制台,该控制台可以通过在命令行中输入node打开,也可以写入浏览器的开发者工具控制台。Chrome浏览器的最新版本可以很好地处理JavaScript的新功能,而无需转写代码。另外,你可以使用JS Bin这样的工具。
JavaScript在名字和语法上都有点让人想起了Java。但是当涉及到语言的核心机制时,它们是非常不同的。来自Java背景的人,对JavaScript的行为可能会感到有点陌生,尤其是当你没有努力去研究它的特性时。
在某些圈子里,还流行尝试在JavaScript中 "模拟 "Java的特性和设计模式。我们不建议这样做,因为这两种语言和各自的生态系统最终都是非常不同的。
JavaScript 和类
在JavaScript中没有像面向对象编程语言中的类机制。然而,有一些功能可以使 "模拟 "面向对象的类成为可能。 当涉及到语法时,这些类和由它们创建的对象很容易让人联想到Java的类和对象。它们的行为也与Java对象相当相似。在核心部分,它们仍然是基于JavaScript's prototypal inheritance的对象。这两种对象的类型实际上都是Object,因为JavaScript基本上只定义了Boolean, Null, Undefined, Number, String, Symbol, BigInt, and Object。
类语法的引入是一个有争议的补充。请查看 Not Awesome: ES6 Classes 或 Is "Class" In ES6 The New "Bad" Part? on Medium 了解更多细节。
ES6类的语法在 "老 "React和Node.js中用得很多,对它的理解也是有益的。现在主要使用React的新Hooks功能,我们对JavaScript的类语法没有具体的使用。