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тиричном виде? Разъясните пожалуйста
20 мая 2017 в 16:47
Ближайшие курсы

Как начать свой путь в разработке?
Онлайн-курс
3
марта
Python - вредные советы
Онлайн-курс
3
марта
Интенсив «SMM стратегия: пример разработки»
Онлайн-курс
3
марта
Новые статьи

UI-дизайнер: подробно о профессии дизайнера интерфейсов
21300

Быстрый старт в диджитал-маркетинге
44500

Как защитить Windows: системный подход
121600