2016-06-21 5 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

Хотя функция внутри там действительно ничего не делает? Не могли бы вы заменить '$ (fu ...)' только с помощью 'console.log (myArray)', и вы достигнете такого же эффекта, – somethinghere

+2

@somethinghere - он задерживает выполнение этого, пока не загорится готовое событие. Это не очень важно для console.log, но будет для чего-либо, связанного с DOM. – Quentin

+0

@somethinghere Inquisi умные умы помогают всем, кто их учит, продолжать, - продолжайте это - дело в том, что [я узнал что-то новое] (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()); 
Смежные вопросы