为什么我的 Javascript 在 IE8 中会中断?

Why does my Javascript break in IE8?

以下代码在 IE8 中无效:

getTypes: function (filter) {
    features = []
    _.each(this.collection.models, function (item) {
        _.each(item.get(filter), function (value) {
            if(features.indexOf(value) == -1){ //// error happens here
                features.push(value)
            }
        })
    })
    return features
}

我收到错误消息: 消息:对象不支持此 属性 或方法

http://jsfiddle.net/w8fm2bf1/

这是为什么?

Array.prototype.indexOf 在 IE 9 之前不支持。(source).

您需要对其进行猴子修补(上面链接的 MDN 页面上有一个示例)或使用替代方法。

IE9之前的IE版本不支持.indexOf() function for Array

作为替代方法,您可以使用 jQuery.inArray()。像这样:

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function(val) {
        return jQuery.inArray(val, this);
    };
}