我之所以问这个问题是因为:我还记得在 ECMAScript-5 中引入了"use strict",它的目的是为了与旧版本兼容。
这意味着旧浏览器将继续正常工作,并且当它们在解析新的 JavaScript 代码时遇到"use strict"语句时,它们会忽略它。
而新的 JS 引擎会将"use strict"语句视为一些特殊方式进行处理,详见严格模式。
因此,谈到这个问题
我非常怀疑并且好奇当ECMAScript-5兼容的浏览器解析ECMAScript-6代码时会发生什么。
我的怀疑是因为ECMAScript-6的新功能涉及语法更改/更新。而那些不了解新语法的旧浏览器将在遇到以下任何新语法时开始抛出错误:
yield[*]、Map、Set、WeakMap、function* foo(){}、=>、for...of等
我的担忧是ECMAScript-6中新功能的决定/包含是否考虑了支持旧浏览器而不会破坏代码?
如果是,那么如何做到的?
如果不是,那么我应该怎么做才能让我的旧浏览器用户满意?
我看到一个解决方案可以让使用旧版浏览器的用户满意,那就是在我的项目中包含一些像转译器这样的工具,比如traceur-compiler。这将把我的ECMAScript-6代码转换为ECMAScript-5等效代码。但是,我还有其他方法可以让我的旧版浏览器用户满意吗?
"use strict";
的不同目的更符合向后兼容性。 - jfriend00