Moving around with friction

HTML

<canvas id="canvas"></canvas>

CSS

html, body {
  margin: 0;
  padding: 0;
  background: #011d04;
}
canvas {
    width: 100%;
    height: 100%;
}

JavaScript

var canvas = document.getElementById("canvas"),
    ctx = canvas.getContext("2d");
var width = 800;
canvas.width = canvas.height = 800;

var x = width/2,
    y = width/2,
    velY = 0,
    velX = 0,
    speed = 8,
    friction = 0.98,
    keys = [];

function update() {
    requestAnimationFrame(update);
    
    if (keys[38]) {
        if (velY > -speed) {
            velY--;
        }
    }
    
    if (keys[40]) {
        if (velY < speed) {
            velY++;
        }
    }
    if (keys[39]) {
        if (velX < speed) {
            velX++;
        }
    }
    if (keys[37]) {
        if (velX > -speed) {
            velX--;
        }
    }

    velY *= friction;
    y += velY;
    velX *= friction;
    x += velX;

    if (x >= width) {
        x = width;
    } else if (x <= 5) {
        x = 5;
    }

    if (y > width) {
        y = width;
    } else if (y <= 5) {
        y = 5;
    }

    ctx.clearRect(0, 0, width, width);
    ctx.beginPath();
    ctx.arc(x, y, 50, 0, Math.PI * 2);
    ctx.fillStyle = '#0145be';
    ctx.fill();
    ctx.strokeStyle = '#011d04';
    ctx.lineWidth = 5;
    ctx.stroke();
}

update();

document.body.addEventListener("keydown", function (e) {
    keys[e.keyCode] = true;
});
document.body.addEventListener("keyup", function (e) {
    keys[e.keyCode] = false;
});