Потому что в вашем случае не объявлена переменная canvas
var canvas = document.getElementById('canvas'),
context = canvas.getContext("2d");
context.fillRect(50, 50, 90, 50)
Так работает в случае когда на странице есть canvas с аттрибутом id="canvas"
Полный исходный код:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<canvas id="canvas"></canvas>
<script>
var canvas = document.getElementById('canvas'),
context = canvas.getContext("2d");
context.fillRect(50, 50, 90, 50)
</script>
</body>
</html>