Javascript 将变量传递给自调用函数
我有一个AJAX请求,在success处理程序中,可以在我将数据传递给名为Javascript 将变量传递给自调用函数,javascript,jquery,Javascript,Jquery,我有一个AJAX请求,在success处理程序中,可以在我将数据传递给名为dataHandler的函数的任何位置获取数据。从那里我可以处理我需要的东西,最终得到一系列的物品 function dataHandler() { var myArray = ["21/06/2016"]; } 我试图将我在dataHandler()函数中得到的东西传递给另一个自调用函数,但是如果我像$(function myName(){}那样命名该函数,那么在我的第一个函数中,我做了myName(myArr
dataHandler
的函数的任何位置获取数据。从那里我可以处理我需要的东西,最终得到一系列的物品
function dataHandler() {
var myArray = ["21/06/2016"];
}
我试图将我在dataHandler()
函数中得到的东西传递给另一个自调用函数,但是如果我像$(function myName(){}
那样命名该函数,那么在我的第一个函数中,我做了myName(myArray);
我仍然无法访问数据
$(function() {
console.log(myArray);
})
如何将变量从普通函数传递到自调用函数?您的代码中没有任何变量,您要传递的变量是它在其中声明的函数
听起来你真的需要这样的东西:
function dataHandler() {
var myArray = ["21/06/2016"];
$(function() {
console.log(myArray);
});
}
dataHandler();
其中:
实际被调用(因此变量被赋值)dataHandler
在$()
内部调用,这样当匿名函数传递给dataHandler
时,它就在作用域内myArray
function dataHandler() {
var myArray = ["21/06/2016"];
$(function() {
console.log(myArray);
});
}
dataHandler();
其中:
实际被调用(因此变量被赋值)dataHandler
在$()
内部调用,这样当匿名函数传递给dataHandler
时,它就在作用域内myArray
function dataHandler() {
var myArray = ["21/06/2016"];
return myArray;
}
(function(yourArray) {
console.log(yourArray);
})(dataHandler());
将函数作为参数传递给自调用函数,如下所示:
function dataHandler() {
var myArray = ["21/06/2016"];
return myArray;
}
(function(yourArray) {
console.log(yourArray);
})(dataHandler());
通常使用自调用函数实现模块模式。在模块模式中,我们将引用保留给函数的返回对象。在这种情况下,我们将返回值视为模块的公共API:
var module = (function (param) {
// private
return {
// public
};
}(param));
通常使用自调用函数实现模块模式。在模块模式中,我们将引用保留给函数的返回对象。在这种情况下,我们将返回值视为模块的公共API:
var module = (function (param) {
// private
return {
// public
};
}(param));
使其全局化,并获得对它的访问您可能实际上想要调用函数:
(function(){/../})(
?不管jQuery如何,这都可以工作,只需创建一个函数,将其包装在括号中,然后使用标准函数调用调用它。另外,值myArray
不存在)超出范围。你的代码中没有任何生命。您正在立即调用$()
,并将一个函数作为参数传递给它。我如何使其全局化?创建一个globar变量,然后在第一个函数中将数组推送到全局变量,然后从第二个函数中获取它?虽然它不同步,所以它可能不总是工作?调用dataHandler
会返回该数组,但返回的数组需要存储或传递给某个对象,否则它会消失在空中,因为变量myArray
只存在于函数内部,而不存在于函数外部。Soconsole.log(dataHandler())
将记录您想要的内容,以及var a=dataHandler();控制台日志(a)
,但不是dataHandler()console.log(myArray)
,因为myArray
是未定义的
使其全局化,并获取对它的访问您可能实际上想要调用函数:(function(){/../})(
?无论jQuery如何,这都可以工作,只需创建一个函数,将其封装在括号中,然后使用标准函数调用调用它。此外,值myArray
不存在)超出范围。代码中没有任何IIFE。您正在立即调用$()
,并将一个函数作为参数传递给它。我如何使其全局化?创建一个globar变量,然后在第一个函数中将数组推送到全局变量,然后从第二个函数中获取它?虽然它不同步,所以它可能不总是工作?调用dataHandler
会返回该数组,但返回的数组需要存储或传递给某个对象,否则它会消失在空中,因为变量myArray
只存在于函数内部,而不存在于函数外部。Soconsole.log(dataHandler())
将记录您想要的内容,以及var a=dataHandler();控制台日志(a)
,但不是dataHandler()console.log(myArray)
,因为myArray
是未定义的
,尽管里面的函数实际上没有做任何事情,是吗?你能用console.log(myArray)替换$(fu…
)吗?你能达到同样的效果吗?除此之外,我知道。@somethinghere-它会延迟它的执行,直到ready事件触发。这对于console.log来说并不重要,但对于涉及DOM的任何事情都是如此。@somethinghere好奇的头脑也能帮助周围的人学习,保持它的正确性,并且与问题无关。虽然它里面的函数并没有真正做任何事情,是吗?你能用console.log(myArray)替换$(fu…
)吗?你能达到同样的效果吗?除此之外,我知道。@somethinghere-它会延迟执行,直到就绪事件触发。这对于console.log来说并不重要,但对于涉及DOM的任何事情都是如此。@somethinghere好奇的头脑也能帮助周围的人学习,保持它-恰如其分,与问题无关。