如何修改箭头函数以在 IE11 中工作

How to modify arrow function to work in IE11

我了解到箭头函数在 IE11 中不起作用。所以我下面的代码在 IE11 中抛出语法错误。但是,我很难将其修改为正常功能。这是有问题的代码行:

let selectors = [nextSlide, nextSlide - slick.slideCount, nextSlide + slick.slideCount].map( n => '[data-slick-index="${n}"]' ).join(', ');

我尝试将 n => 更改为 function(n) {},如下所示,但这在所有浏览器中都会出错。

let selectors = [nextSlide, nextSlide - slick.slideCount, nextSlide + slick.slideCount].map( function(n) { '[data-slick-index="${n}"]' } ).join(', ');

我做错了什么?

如果有助于了解发生了什么,请查看完整函数:

$('.text-slider').on('beforeChange', function(event, slick, currentSlide, nextSlide){
  let selectors = [nextSlide, nextSlide - slick.slideCount, nextSlide + slick.slideCount].map( n => '[data-slick-index="${n}"]' ).join(', ');
  $('.shimmer2').removeClass('shimmer2');
  $(selectors).addClass('shimmer2');
});

谢谢!

let selectors = [nextSlide, nextSlide - slick.slideCount, nextSlide + slick.slideCount].map( n => '[data-slick-index="${n}"]' ).join(', ');

像上面那样没有大括号的箭头函数隐含地 return expression/statement 的结果。对于带大括号的箭头函数或像你在这里这样的非箭头匿名函数,你想要 return 一些明确的东西:

let selectors = [nextSlide, nextSlide - slick.slideCount, nextSlide + slick.slideCount].map(function(n) {
    return '[data-slick-index="${n}"]';
}).join(', ');