jQuery 匿名函数语法与命名函数语法

jQuery anonymous vs named function syntax

此代码用于在按下按钮时淡入淡出并循环播放音频元素:

$("#loop").click(function(){
    var tone = document.getElementById("testTone");
    tone.play();
    $("#testTone").animate({volume: 0}, 1900);
    setInterval(function(){
        tone.currentTime = 0;
        tone.volume = 1;
        tone.play();
        $("#testTone").animate({volume: 0}, 1900);
    },2000)
});

但是,当我命名该函数时,它会在页面加载时立即调用,而无需按下按钮。

function loopAudio(target){
    var tone = document.getElementById(target);
    tone.play();
    $("#"+target).animate({volume: 0}, 1900);
    setInterval(function(){
        tone.currentTime = 0;
        tone.volume = 1;
        tone.play();
        $("#"+target).animate({volume: 0}, 1900);
    },2000)
};
$("#loop").click(loopAudio("testTone"));

为什么?调用这个命名函数的正确方法是什么?

编辑: 由于传递参数调用函数,传递参数的良好变通策略是什么?

你试过了吗:

$("#loop").click(function(){
  loopAudio("testTone");
});