JavaScript

Аслан Сармурзин

Не знаком с синтаксисом JAvaScript, помогите пожалуйста. Функция, встраиваемая в str.replace, должна выдавать на выходе один символ (думаю так),

function (c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
return v.toString(16);

Создается переменная r, которая принимает значение случайное от 0 до 16, а что значит | 0 не знаю
далее переменная v равна значению на выходе из условия, если входящая переменная была "x" то равно r, если нет, то не могу понять что делает этот (r & 0x3 | 0x8) блок. И после всего возвращаем число в строку в виде 16тиричном виде? Разъясните пожалуйста

1 чел.