2013-09-14 3 views
6

I'am в яваскрипте новичка, вот код из ExtJS, который меня смущает:Почему ExtJS хочет проверить, поддерживает ли браузер сортировку?

supportsSort = (function() { 
    var a = [1,2,3,4,5].sort(function(){ return 0; }); 
    return a[0] === 1 && a[1] === 2 && a[2] === 3 && a[3] === 4 && a[4] === 5; 
}()), 

ли кто-то может сказать мне, почему ExtJS хотят сделать этот тест?

Лучше всего прикрепить код примера.

+0

Я до сих пор голосую за то, что вы действительно врывались в рамки, которые вы используете :) – Emissary

+0

@ Emissary спасибо за ваш повтор и голосование, я согласен с вашим отправленным «оставляя тест на фактическую поддержку более или менее избыточным» , поэтому я задаю тот же вопрос на форуме ExtJS [ссылка] (http://www.sencha.com/forum/showthread.php?271928-Why-does-Ext-want-to-test-browser-supports-sorting) – hsiaosiyuan

+0

@ Emissary ha, парень из команды разработчиков ExtJS дал ответ, вы можете увидеть его, просто следуя ссылке, которую я отправил. – hsiaosiyuan

ответ

2

Неустойчивый отправить это как ответ, как я по общему признанию, просто принимать обоснованное предположение, но в соответствии с MDN, браузер-совместимость для Array.sort перечислен как ECMAScript5 и «да» на все (в отличие от списка фактической номера версий) - оставляя тест для актуальным поддержка более или менее избыточная.

Имя переменной, вероятно, немного пропущено, хотя, если вы действительно следуете за тем, что она делает, функция, которая передается в sort, просто возвращает 0; как правило, вы можете вернуть 1 или -1 в зависимости от условий сравнения, чтобы управлять порядком массива. Таким образом, ожидаемый результат состоит в том, что порядок массива остается неизменным.

Оператор return - это всего лишь цепочка булевых проверок относительно того, находится ли массив в том же порядке, в каком он был изначально. Возможно, тогда этот флаг supportsSort должен проверить, действительно ли реализация функции сортировки браузера/Javascript является функцией stable algorithm.

+1

Я задал один и тот же вопрос на форуме ExtJS и парень из их команда разработчиков дала мне ответ, см. эту статью [http://www.sencha.com/forum/showthread.php?271928-Why-does-Ext-want-to-test-browser-supports- сортировка) – hsiaosiyuan

+0

+1 Эван на форуме Sencha указывает, что это на самом деле правильный ответ ... – rixo

+0

Я такой человек с shilly-shally, я сделал @Riku как правильный ответ из-за наличия двух ссылок в ответе помогите мне лучше, но вы, ребята, все подумали, что это лучший ответ :(, но все равно большое вам спасибо, вы, ребята, очень помогли! – hsiaosiyuan

0

Я думаю, что этот тест необходим, чтобы проверить, поддерживает ли браузер эту функцию или нет.

Как это обсуждается в этом post или в этом link вы можете найти Array.prototype.sort([comparator]). Показано, что не все версии браузеров поддерживают функцию сортировки.

В наши дни нет браузера, который не поддерживает эту функцию (я говорю о версиях латв). Но в случае, если Ext Js используется для разработки для более ранних версий, он становится необходимым.

Смежные вопросы