Как говорит Рубенс, обычно это трюк, используемый для предотвращения кеширования. Браузеры обычно очень агрессивно кэшируют JavaScript и CSS, что может сэкономить вам пропускную способность, но также может вызвать проблемы с развертыванием при изменении ваших скриптов.
Идея состоит в том, что браузеры будут считать ресурс, расположенный в http://www.example.com/something.js?foo
, отличным от http://www.example.com/something.js?bar
, и поэтому не будут использовать свой локальный кеш для извлечения ресурса.
Вероятно, более распространенным шаблоном является добавление инкрементного значения, которое может быть изменено всякий раз, когда необходимо изменить ресурс. Таким образом, вы получаете выгоду от повторных запросов, обслуживаемых клиентским кешем, но при развертывании новой версии вы можете заставить браузер загружать новую версию.
Лично я предпочитаю добавлять время последнего изменения файла как метку времени Unix, поэтому мне не нужно искать и менять номера версий всякий раз, когда я изменяю файл.