Javascript onloadedmetadata不';你不为音频工作吗?

Javascript onloadedmetadata不';你不为音频工作吗?,javascript,html,events,javascript-events,event-handling,Javascript,Html,Events,Javascript Events,Event Handling,如果我有以下代码,则调用回调函数: var audio = new Audio(); audio.addEventListener('loadedmetadata', function () { console.log("Loaded metadata for %s, duration=%s", soundUrl, audio.duration); audio = null; }); audio.src = soundUrl; 但是,如果执行以下

如果我有以下代码,则调用回调函数:

var audio = new Audio();
audio.addEventListener('loadedmetadata', function () {
    console.log("Loaded metadata for %s, duration=%s",
                soundUrl, audio.duration);
    audio = null;
});
audio.src = soundUrl;
但是,如果执行以下操作,则不会调用回调:

var audio = new Audio();
audio.onloadedmetadata = function () {
    console.log("Loaded metadata for %s, duration=%s",
                soundUrl, audio.duration);
    audio = null;
};
audio.src = soundUrl;

有什么好的理由吗?我认为
FOO.addEventListener(BAR,BAZ)
相当于
FOO['on'+BAR]=BAZ

显然不是在这种情况下,尽管我相信这两种方法应该具有相同的效果。在脚本有机会运行并触发事件之前,音频加载速度可能会更快


我浏览了一些,但只能找到添加addEventListener的示例。dev.opera.com上的这篇文章提供了一些信息,尽管它是关于视频的

我同意第二个示例应该可以使用,但MDN示例也使用了
addEventListener