ipad(ios 9.3.5)のsafariでのjavascript関数呼び出しで、参照エラーになります。
サーバ側はphp7+smartyです。
動的にjavascriptを出力したいので、smartyのtplファイル内にjavascriptを記載しています。
javascriptはhaedタグ内でfunction定義を、bodyタグ内部でjs実行しつつ、必要によりfunctionを呼び出しています。

この構成でandroid(chrome)、windows(chrome)、mac osx(safari)、ios(safari)で動作確認をすると、ios(safari)だけ、functionの参照エラーになります。

ざっくりコードを書くと以下ような流れです。

<head>
<script type="text/javascript">
①全画面に共通的なfuncton定義
</script>
<script type="text/javascript">
②この画面だけのfuncton定義 
</script>
</head>

<body>
<script type="text/javascript">
③function呼び出し
</script>
</body>

これで①~③の頭でconsole.logでログ出力すると、ios以外では①、②、③の順番にログ出力されるのですが、iosのみは①、③となって、③で②のfunctionを読んでいるので参照エラーになります。
※WEBインスペクタでのデバック実行では②もソースに見えているのに定義実行されません。

分かりにくい文章で申し訳ないのですが、同じような事象に直面した方がおられましたら、ご助言をお願い致します。
ちなみにソースの共通化の都合で、①、②、③は別tplになっていて、画面用tplにインクルードしています。