正直なところ、これが機能しない理由がわかりません。Professional JavaScript for Web Developers 3rd edition を読んで、例を試しています。html タグが処理された直後にスクリプトをロードするべきではありませんか?
index.html
<!DOCTYPE html>
<html>
<head>
<title>Example HTML Page</title>
<script type="test/javascript" defer src="js/example1.js"></script>
<script type="test/javascript" defer src="js/example2.js"></script>
<script type="text/javascript">
alert("test");
</script>
</head>
<body>
<h1> test </h2>
</body>
</html>
js/example1.js
alert("test");
js/example2.js
alert("test2");