◆ window.onload = function じゃないとダメらしい

window.onload = function(){}
って グローバル領域で
function onload(){
}
するのと同じだよね と思って下側の書き方をしたら動きませんでした


下側のコードでも もちろん window.onload に関数が入ってますし
window.onload()
とするとちゃんと onload 関数が実行されます

しかし ロード終了時や
var ev = new Event("load")
window.dispatchEvent(ev)
で イベントを起こしても関数が実行されません

また onload 関数が定義されるとその後に window.onload を上書きしても実行されませんでした
両方書いてもダメということです

さらに Chrome に限ってはコード中に onload 関数が存在すると 関数が定義されなくても動きませんでした
<script>
if(0){
function onload(){}
}
window.onload = function(){}
</script>
このコードで window.onload の関数は実行されません
謎の最適化がされてるようです


~~追記~

ブロックスコープじゃなくて関数スコープなことと function 構文はスコープの最初で宣言されることを考えると Chrome のほうが自然で Firefox のほうが不自然なのかもしれないです