javascript dibujar una imagen en lienzo

Intento crear un código javascript para dibujar una imagen en un lienzo, pero no sé dónde está mal. Ese es mi código:

<body>
<canvas id = "my_canvas"></canvas>
<script>
function setup(){
    var canvas = document.getElementById('my_canvas');
    var ctx = canvas.getContext('2d');
    canvas.width = 800;
    canvas.height = 600;
    var image = new Image();
    image.src = 'a.png';
    ctx.drawImage(image,5,5);
};
window.onload = setup;
setup();

</script>

La pregunta es, si pongo una línea de código.setup(); Al final, entonces la imagen se dibuja correctamente, no sé por qué.

Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta