如何在Chrome中停用ES6功能

Mik*_*ail 2 javascript google-chrome ecmascript-6 internet-explorer-11

在Chrome和其他所有现代浏览器中发现了非常奇怪且不明显的javascript行为.假设我们有像这样的JavaScript的Html

<html>
<title>
</title>
<body>
    <h1>Hello world!</h1>
    <script type="text/javascript">
        var me = {
            func1: function(){
                console.log('Im function 1');
            },
            func2(){
                console.log('Im function 2');
            }
        };
        me.func1();
        me.func2();

    </script>
</body>
Run Code Online (Sandbox Code Playgroud)

当您在chrome中运行它时,您将在控制台中看到:

Im function 1
Im function 2
Run Code Online (Sandbox Code Playgroud)

但是当你在IE11中运行它时,你会收到一个错误

SCRIPT1003: Expected ':'
JavascriptTest.html (11,10)
Run Code Online (Sandbox Code Playgroud)

据我所知,在ES6中不需要将函数声明为func1,chrome也很满意func2之类的声明

var me = {
                func1: function(){
                    console.log('Im function 1');
                },
                func2(){
                    console.log('Im function 2');
                }
            };
Run Code Online (Sandbox Code Playgroud)

但对于IE11来说这很重要.在服务器端和客户端编写代码时常见错误.我正在寻找一种方法来禁用Chrome中的这种功能,这有可能吗?

T.J*_*der 6

您无法在Chrome中停用ES2015 +语言功能,没有.

你可以做的是使用"linter"工具(如ESLint)来检查你的代码,以确保它没有你不想要的东西.例如,那个特定的ecmaVersion设置有一个设置,您可以使用它来控制文件中应该和不应该允许的语法; 大概也有其他人也有.

另一个选择(以及我对自己工作的偏好)是使用新功能,即使我的目标浏览器不支持它们,也可以转回ES5(在我的情况下,使用Babel).这样,即使我必须支持IE,我也能获得新功能的优势.