2013-03-04 2 views
3

У меня есть два файла js на моей странице html. Если первый один начинается с:return value from js file

(function($){ 
    .. 
    .. 
    }(jQuery)); 

можно вставить var в function($,varname), return это значение и использовать его в другом файле?

+2

не 'return', но вы можете назначить его как свойство' window'. –

ответ

3

Для этого вам нужна глобальная переменная. Вы можете сделать это одним из нескольких способов. Предположим, нам нужно отправить значение «Бэкон» в другой скрипт.

(function($){ 
    window.myScriptsExports = "Bacon"; 
}(jQuery)); 

// OR 

var myScriptsExports = (function($){ 
    // other code 
    return "Bacon"; 
    // NO other code 
}(jQuery)); 

// OR (not really recommended) 

(function($){ 
    // other code 
    $.myScriptsExports = "Bacon"; 
    // other code 
}(jQuery)); 
1

Предположив ваша функция Synchrone, вы можете установить глобальную функцию:

(function($){ 
    .. 
     var myvar = 666; 
     window.getMyVar = function() { 
     return myvar; 
     }; 
    .. 
    }(jQuery)); 

и вы можете использовать его из другой функции, если второй файл импортируется после этого один:

(function($){ 
    .. 
     var myprevisouslysetvar = window.getMyVar(); 
    .. 
    }(jQuery)); 

Обратите внимание, что файлы не имеют значения в javascript: ваша страница будет работать одинаково (отдельно детали, если у вас есть «use strict») с обоими конкатенированными файлами.

+0

После того, как редактирование стало более понятным, спасибо. – steo

2

Вы можете улучшить код, используя глобальное пространство имен, который идет как:

(function($,global){ 
     var _obj = {}; 
     _obj.property1 = 'Property1'; 
     _obj.function1 = function() { console.log('Function 1');}; 
     global.myObject = _obj; 
    }(jQuery,window)); 

    //accessing 
    window.myObject.property1 
    //or 
    window.myObject.function1()