为什么要将调用转移到DoStuff
函数?
Main
对事件做出反应并“做事”不是重点吗?
如果是这种情况,您应该将该功能保留在 中Main
,如下所示:
function Main(index){
switch (index){
case 1:
DoStuff();
break;
case 2:
DoStuff2();
break;
default:
DoStuff(); //Because, why not?
{
}
function DoStuff(){
document.write("Hello, world!");
}
function DoStuff2() {//something else happens here}
您没有将Main
其用作对象,因此不需要持久性(据我所知)。只需切断不必要的电话,您的生活就会变得更简单。但是,如果您一心想要实现这种功能,您可以创建一个简单的闭包。它看起来像这样:
<input type="button" onclick="Main(1);" value="Do Something" />
<script type="text/javascript">
function Main(index) {
//This function only exists within the scope of Main
function DoStuff() {
//But now it has the added benefit of knowing about index
switch (index) {
case 1:
alert("Hello, world!");
break;
case 2:
alert("Not, really. I'm mad.");
break;
default:
alert("Hello, world!");
}
}
//Now Main is going to call it's internal function and...
DoStuff();
}
</script>
由于您DoStuff
在正文中声明,Main
这意味着它DoStuff
存在于的词法范围内,Main
并且可以访问其所有成员。闭包确实很强大,但很容易被滥用。如果你真的需要这种功能,我建议你走这条路,否则,KISS(保持简单先生)。