2016-06-21 49 views
0

我有一個AJAX請求,並且在成功處理程序中,爲了能夠在將數據傳遞給函數的任何地方(稱爲dataHandler)獲取數據。從那裏我處理我需要的東西,並最終得到一系列物品。將變量傳遞給自調用函數

function dataHandler() { 
    var myArray = ["21/06/2016"]; 
} 

我想通過我在dataHandler()功能到另一個功能是自行調用已經有了,但如果我命名的函數一樣$(function myName(){}然後在我的第一個功能做myName(myArray);我仍然無法訪問數據。

$(function() { 
    console.log(myArray); 
}) 

如何將一個變量從普通函數傳遞給自調函數?

+0

讓它全球,並得到它的訪問 –

+0

你可能真的想要調用函數:'(function(){/.../})()'?無論jQuery如何,這都可以工作,只需創建一個函數,將其包裝在括號中並使用標準函數調用進行調用。另外,值'myArray'不存在)在scope_之外。 – somethinghere

+1

您的代碼中沒有任何IIFE。您立即調用'$()'並將其作爲參數傳遞給函數。 – Quentin

回答

2

您沒有任何IIFE在你的代碼,你要傳遞變量是locally scoped到它在聲明的功能

這聽起來像你真正需要的東西,如:。

function dataHandler() { 
    var myArray = ["21/06/2016"]; 

    $(function() { 
     console.log(myArray); 
    }); 
} 

dataHandler(); 

其中:

  • dataHandler實際上是所謂的(所以變量被分配)
  • $()被稱爲內dataHandler使myArray在範圍時,匿名函數傳遞給它
+1

儘管裏面的函數並沒有真的做什麼,你可以用'console.log(myArray)'代替'$(fu ...)',你可以達到同樣的效果,除了這一點,我知道。 – somethinghere

+2

@somethinghere - 它延遲了它的執行,直到ready事件觸發爲止。對於console.log來說這並不重要,但是對於任何涉及DOM的事情來說。 – Quentin

+0

@somethinghere Inquisi tive的頭腦可以幫助他們周圍的人學習,保持它 - 例證[我學到了新的東西](http:// stackoverflow。com/questions/7614574/dollar-sign-before-self-declaring-anonymous-function-in-javascript)並且與問題無關。 – bwegs

1

傳遞函數作爲參數傳遞給自調用函數,就像這樣:

function dataHandler() { 
    var myArray = ["21/06/2016"]; 
    return myArray; 
} 

(function(yourArray) { 
    console.log(yourArray); 
})(dataHandler());