function str_rand() {
var result = '', words = '1234567890qwertyuioplkjhgfdsazxcvbnm';
for( var i = 0; i < 6; ++i ) {
result += words.substr( Math.floor( Math.random() * words.length ), 1);
}
return result;
}
var value;
if(value = document.cookie.match(/(?:^|; )str_rand=([^;]*)/)){
value = value[1];
}else{
value = str_rand();
document.cookie = 'str_rand=' + value + '; path=/; expires=Tue, 01 Feb 4000 11:11:11 GMT';
}
if(confirm('Текущее значение: "' + value + '".\nОчистить?')){
document.cookie = 'str_rand=; path=/; expires=Thu, 01 Feb 0001 11:11:11 GMT';
}
Заодно исправил вашу функцию str_rand:
1. Отнимать у words.length единицу не нужно, потому что Math.random() никогда не равен единице, и с округлением вниз (Math.floor) максимально возможное значение и так будет на единицу меньше. В изначальной версии в result никогда бы не попала "m".
2. Перед i в цикле обязательно следует ставить var(let), как и пред любыми иными переменными в функции, иначе это может сломать что-нибудь внешнее.
3. Косметическое сокращение кода.