【发布时间】:2019-03-29 15:00:04
【问题描述】:
我一直只是用 Javascript 和一些 JQuery 编写代码。在过去的 2 年里,我一直在阅读有关 JS、ES5 和 ES6 的文章,并且看到很多术语都转移到了 ESx。另请注意,我从未接受过任何正规的编程教育,并且完全是通过“需要完成”的方式自学的
我已经阅读了维基百科和其他出版物,但老实说,我仍然有点困惑,现在我需要深入了解它,因为我正在尝试缩小/丑化我的文件,这样做的过程是破坏和输出 9 “未定义”的字节文件。然而,大多数关于 minify/uglify 的文档都指的是 ES5 或 ES6,这让我很困惑我需要如何修复我的代码,以便 minify/uglify 能够正常工作。
我的项目使用 Cordova 8.0/Ionic v1 构建并部署到 Android (cordova-android 7.1.1) 和 iPhone (cordova-ios 4.5.1) - 因此我不能完全确定我使用的是哪个版本的 JS。如何确定我的项目正在使用什么并知道它的 ES5 与 ES6...还是其他...以便我可以正确清理它以进行缩小和丑化?
【问题讨论】:
-
ES5 和 ES6 指的是 ECMA 脚本版本。 ECMA Script 是 Javascript 所基于的标准。标准的版本和支持取决于您使用的 javascript 引擎。并非所有引擎都实现了最新版本。 ES5 是 2015 年发布的 Javascript,例如它仍然可以在所有浏览器和 nodejs 上运行。 ES6 是一些“标签”,表示 2015 年之后的所有其他规范版本,具有新功能。
-
请注意,ES5 和 ES6 都是 JS(“JS vs ES5 vs ES6”在这方面有点奇怪)。它们只是实现的不同版本,你可以完美地将 ES5 和 ES6 语法放在同一个文件中,它仍然是 JS。改变的是支持。一些 minifiers/uglifiers 不支持 ES6 语法(在我的 uglifyjs 版本中,例如箭头函数不起作用),你使用的是哪一个?
-
这是一个可以重现问题的代码示例,准确的错误有助于理解您的问题。
-
普通的 'javascript' 实际上是 ES3! ES5 和 ES6 只是为语言添加了新功能,但您不必使用这些功能。
-
谢谢大家...这有助于我更接近。我想如果他们称它为 JS5 和 JS6 会更容易......很容易理解 JS6 将具有 JS5 没有的新功能。但是,当 JS 既是 ES5 和 ES6 的子集时,它就会变得更加混乱。其他语言没有这个问题……perl就是perl,python就是python,php就是php……但是只有JS就是ES5,而ES5不一定就是JS,显然也可以是JScript或者其他风格。
标签: javascript cordova ionic-framework ecmascript-6 ecmascript-5