Глядя в Underscore.js
кода и более конкретно в _.indexOf()
функции (найти код с комментариями here)_.indexOf() `item! == item` - в чем его цель?
_.indexOf = function(array, item, isSorted) {
var i = 0, length = array && array.length;
if (typeof isSorted == 'number') {
i = isSorted < 0 ? Math.max(0, length + isSorted) : isSorted;
} else if (isSorted && length) {
i = _.sortedIndex(array, item);
return array[i] === item ? i : -1;
}
if (item !== item) {
return _.findIndex(slice.call(array, i), _.isNaN);
}
for (; i < length; i++) if (array[i] === item) return i;
return -1;
};
Я заметил if(item !== item){...}
заявление, но я не понимаю своей цели. items
является параметром, и он не изменяется внутри функции. Когда переменная будет отличаться от самой себя?
Я что-то упустил?
это для меня в будущем: http://ecma-international.org/ecma-262/5.1/#sec-15.1.2.4 – BeNdErR