Não é uma solução super robusta, mas funciona para análise simples. Meu caso de uso para isso tem sido rastrear e analisar referenciadores e verificar se há parâmetros de consulta modificados.
Essa função aceita um varName (o nome do parâmetro do qual você deseja o valor) e a string a ser pesquisada.
function parseQueryString(varName, queryStr) {
var queryStr = unescape(queryStr) + '&',
regex = new RegExp('.*?[&\?]' + varName + '=(.*?)&.*'),
val = queryStr.replace(regex, "$1");
return val == queryStr ? 0 : val;
}