【发布时间】:2017-08-28 07:17:49
【问题描述】:
在 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>
当你在 chrome 中运行它时,你会在控制台中看到:
Im function 1
Im function 2
但是当你在 IE11 中运行时会报错
SCRIPT1003: Expected ':'
JavascriptTest.html (11,10)
据我了解,在 ES6 中不需要将函数声明为 func1,chrome 也对 func2 之类的声明感到满意
var me = {
func1: function(){
console.log('Im function 1');
},
func2(){
console.log('Im function 2');
}
};
但对于 IE11 来说,这很重要。当您在服务器端和客户端编写代码时,这是常见的错误。 我正在寻找一种方法来禁用 chrome 中的此类功能,有可能吗?
【问题讨论】:
-
最好使用
transpiler像 babel others 将代码从 ES6 转换为较低的代码,其他旧浏览器也可以理解,它会在编译时将您的代码转换为旧的 Javascript 代码(更好) / 运行时间, -
这就是为什么在目标浏览器中进行彻底测试很重要的原因。 :-)
-
这不是一个常见的错误。一个人应该始终了解他/她使用的功能。方法快捷方式是 ES6,developer.mozilla.org/en/docs/Web/JavaScript/Reference/…。不可能做那样的事情。相反,您可以将 linter 合并到您的项目中。当然,这意味着代码应该更有条理,而不仅仅是驻留在内联
-
100% 同意@DeepakSharma,通过转译器运行你的东西,而不是在 Chrome 中禁用 ES6。我认为这甚至是不可能的,因为那时您必须在 Chrome 中禁用 JS 引擎的功能。
-
@estus:最近我不得不从事一个仅限于 ES5 功能的项目。一旦你从其中解脱出来,非常很难忘记
const、箭头函数、方法声明等等,然后编写 ES5 代码。 :-)
标签: javascript google-chrome ecmascript-6 internet-explorer-11