我可能有一个简单的问题需要帮助。
我有两个js文件,我已经通过html中的标签加载到页面上。这些文件中的所有代码都在$(document).ready();
在某个事件中,第一个文件中定义的函数A尝试调用另一个文件中定义的函数B.但是,这失败了,我得到一个错误,即函数B没有被定义。
我注意到如果我在$(document).ready()
之外定义函数B,那么函数A能够调用函数B - 它在范围内。
为什么?
答案 0 :(得分:4)
这是一个范围问题。函数中定义的所有内容只能在该函数中访问,除非以某种其他方式使其全局化。当您将该功能移到就绪功能之外时,它将变为全局功能,使其可以全局访问。
编辑:当我说“以其他方式制造全球化”时,我的意思是这样的:
window.something = "something";
即使您的就绪函数中存在这行代码,也会创建一个全局变量something
。