将箭头功能更改为正常功能?

时间:2019-10-01 11:01:55

标签: javascript jquery

我有一个简单的功能,可以使用箭头功能播放上一个视频

这是我的解决方法

  $('#interactive-layers').on('click', ".go_back", function () {
        videohistory.pop();
        var hist = videohistory[videohistory.length - 1];
        videohistory.pop();


        if (hist[0].movieid == 4) {

            let movieData = movies.find(({
                movieid
            }) => movieid == 23);
            hist.push(movieData);
            playVideo(hist[3], hist[1], hist[2]);
        } else {
            playVideo(hist[0], hist[1], hist[2]);
        }
    });

这在chrome,safari,firefox中工作正常,但在Internet Explorer中,出现以下错误。

SCRIPT1003: Expected ':'

如何更改此功能,使其与所有浏览器兼容?

2 个答案:

答案 0 :(得分:1)

尝试一下

$('#interactive-layers').on('click', ".go_back", function () {
        videohistory.pop();
        var hist = videohistory[videohistory.length - 1];
        videohistory.pop();

        if (hist[0].movieid == 4) {

            // Here I change the Arrow function with the es5 normal one.
            /*
               let movieData = movies.find(({ movieid }) => movieid == 23);
             */
            let movieData = movies.find(function(movieid){
              return movieid == 23;
            });
            hist.push(movieData);
            playVideo(hist[3], hist[1], hist[2]);
        } else {
            playVideo(hist[0], hist[1], hist[2]);
        }
    });

答案 1 :(得分:1)

您需要将其转换为普通的function而不是箭头功能。但是请记住,您已经在array.find()中使用了参数解构,因此在转换时需要正确处理它,如下所示:

let movieData = movies.find(function(entry) { return entry.movieid == 23; });

此外,我也不会使用let来确保它可以在所有IE浏览器上运行。 MDN表示它在IE上有部分支持,因此...改为使用var来支持所有IE浏览器。

上面提到的另一件事是IE不支持array.find()本身,因此您需要导入polyfill