用{}中断IE 11

问题描述

在我的网站上使用slidetoggle作为变量时出现问题。我正在使用domSlider。当我尝试以下操作时,我遇到了无法理解的问题。

如果将slidetoggle定义为:

var {slidetoggle} = window.domSlider;

我在IE 11中获得了SCRIPT1010: Expected identifier,但可以在Chrome和现代浏览器中使用。

如果我将其定义为:

var slidetoggle = window.domSlider;

我在Chrome和其他现代浏览器中得到Uncaught TypeError: slidetoggle is not a function。但是IE 11中没有错误

我不知道是什么原因造成的,以及如何从这里继续前进。

解决方法

IE11不支持解构分配:Browser_compatibility

var { slideToggle } = window.domSlider;

将是:

var slideToggle = window.domSlider.slideToggle;

要在IE11中工作,或者您可以直接使用window.domSlider.slideToggle

,

var { item } = func()构造称为 destructuring 。较旧的Redmond中学科学计划(IE11)不支持该计划;这是他们停止在IE上使用后产生的javascript版本。

如果您要定位IE,请滚动到MDN页面底部,描述该功能。对于您的示例,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#会说明哪些浏览器支持该功能。

还有一个名为CanIUse.com的网站,其中逐个功能提供有关浏览器支持的信息。

有一个名为Babel的编译器(将新的javascript变成旧的编译器)。你可以试试看。但是,对于SO的答案,解释如何在您的项目中进行装配实在太多了。

欢迎来到为不良旧版浏览器开发代码的美好世界。微软有充分的理由放弃自己的浏览器开发并采用Chromium。