未定义函数中的JavaScript函数

未定义函数中的JavaScript函数,javascript,Javascript,有人能解释一下为什么第一个函数中的第二个函数是未定义的吗 var a = 1 function abc () { alert(a); function xyz () { alert(a); } } xyz是abc函数专用的内部函数。 除非将其公开,否则无法调用xyz这是由于您尝试全局执行xyz的范围所造成的。xyz只能在abc内部运行—在本地范围中定义了xyz。您应该在问题中包含HTML,这样才有意义。它在abc内部不

有人能解释一下为什么第一个函数中的第二个函数是未定义的吗

var a = 1

function abc () { 
    alert(a); 
        function xyz () { 
            alert(a); 
        } 
}
xyz是abc函数专用的内部函数。
除非将其公开,否则无法调用xyz这是由于您尝试全局执行xyz的范围所造成的。xyz只能在abc内部运行—在本地范围中定义了xyz。

您应该在问题中包含HTML,这样才有意义。它在abc内部不是未定义的。然而,它不在全局范围内,这是有点明显的。关于像onclick属性中的dupe-inline事件处理程序,通常要求它们的目标在全局范围内可用。这也是一种相当过时的技术-您应该研究使用,它允许您任意嵌套函数,并且仍然让它们响应按钮单击之类的事情。@ozil Uncaught TypeError:abc….xyz不是一个函数-您看到的警报是来自外部函数的警报。您需要onclick=abc;让它运行返回的函数。不过,您会收到两个警报,因此我不确定这能解决什么问题。似乎您可以通过调用abc.xyz@spex5查看我在与此相关的问题下的评论-xyz实际上没有在那里运行,它抛出了一个错误。@user2181397说除非你公开。从外部功能返回内部功能就是将其公开。