The script runs before the document loaded, so why does console.log(b) show elements in the collection?
If console.log(b) has elements then why does console.log(b[0]) show undefined and console.log(b.length) 0?
<html> 
    <head> 
    
    <script>
        function test(){
            var b = document.getElementsByName('a');
            console.log(b);
            console.log(b[0]);
            console.log(b.length);
        }
        test();
    </script>
    </head>
    
    <body>
    <form id="a" name="a"></form>
    </body>
</html>