!
инвертирует значение и дает противоположное логическое значение:
!true == false
!false == true
!1 == false
!0 == true
--[value]
вычитает один (1) из числа, а затем возвращает то число, с которым нужно работать:
var a = 1, b = 2;
--a == 0
--b == 1
Таким образом, !--pending
вычитает одно из ожидающих, а затем возвращает значение, противоположное его значению истина / ложь (независимо от того, является ли оно 0
).
pending = 2; !--pending == false
pending = 1; !--pending == true
pending = 0; !--pending == false
И да, следуйте подсказке. Это может быть распространенной идиомой в других языках программирования, но для большинства декларативного программирования на JavaScript это выглядит довольно чуждо.
Я удивлен этими вводящими в заблуждение ответами.
ASP.NET AJAX всегда предоставлял как отладочную, так и сжатую версии MicrosoftAjax.js. Комбинация параметра отладки web.config и свойства ScriptMode ScriptManager определяет, на какой сценарий ссылается.
Кроме того, вы можете использовать параметр «розничная торговля» , чтобы принудительно использовать сжатые сценарии независимо от того.
Что бы вы предпочли:
См. http://www.codeproject.com/KB/aspnet/AspNetOptimizer.aspx , вам нужна опция
enableScriptMinification="true"
и добавьте MicrosoftAjax.js в список
РЕДАКТИРОВАТЬ: В свою защиту, на момент написания этого ответа у меня не было опыта работы с .NET 3.5; Теперь я понимаю, что они сделали несколько столь необходимых улучшений в этой области.
Очевидно, MS не считает, что размер файла JavaScript очень важен (что безумие). Кроме того, исходя из моего опыта работы с MS Ajax, они также вставляют несколько тегов SCRIPT (иногда более 10) в разметку. Эти теги переносят скрипты из обработчика WebResource.axd. Так что нужно сделать десять или более запросов, чтобы получить Javascript, необходимый для запуска страницы! Чтобы добавить к нелепости, они прикрепляют сумасшедшую строку запроса к URL-адресу обработчика, что, вероятно, предотвращает кеширование сценария браузером.
Это безумие было достаточной причиной для меня полностью отказаться от MS Ajax и переключиться на jQuery ,
Я могу только предположить, что он был оставлен как есть для простоты понимания, и, как вы уже намекнули, я вижу известную причину, по которой вы не можете сжать его самостоятельно, это всего лишь В конце концов, JavaScript - хотя MS может и хотелось бы, чтобы вы поверили в обратное, они не посыпают его волшебной пылью пикси, чтобы все было по-другому! :)
[И давайте смотреть правде в глаза; MS никогда не боялась размера своего кода, не так ли?]
Все скрипты в System.Web.Extensions уменьшены - есть две версии каждого, как указывает отличный ответ Дэйва Уорда. ScriptManager по умолчанию будет использовать отладочную версию, когда web.config находится в режиме отладки. Переверните его, чтобы выпустить с розничной настройкой или debug = "false", а затем посмотрите на сценарий.
Кроме того, сценарии, обслуживаемые через WebResourceHandler или ScriptResourceHandler, фактически кэшируются. Они кэшируются наилучшим образом - навсегда, поэтому им даже не понадобится 301 при будущих посещениях. Строка запроса остается неизменной, потому что она содержит зашифрованные данные. Он зашифрован, потому что он содержит информацию о ресурсе скрипта, включая имя сборки, а также потому, что он предотвращает атаки переполнения кэша.
Не ищу здесь представителя, просто хотел дать более подробную информацию.