Javascript, вызывающая функция - PullRequest
1 голос
/ 11 июля 2011

из предыдущей справки я использую что-то вроде этого:

(function (global) {

  // your code here

  global.myGlobalVar = myVar

}(this));

, который отлично работает для переменных, но как мне сделать это для функций?

Например, я попробовал это:

(function (global) {

  function something()
{
// do something, return something
}

  global.something()= something();

}(this));

но это не работает: (

Как мне заставить его работать с функциями?

Спасибо!

EDIT:

Обратите внимание, что это вызывается на HTML-странице, сначала я делаю это:

<script language="Javascript" src="four.js">

, затем

<body onload="javascript:something()">

Ответы [ 3 ]

5 голосов
/ 11 июля 2011

Если вы хотите объявить функцию, вы не должны выполнять ее.Так что удалите ().

(function (global) {

  function something()
{
// do something, return something
}

  global.something = something; // something is the variable
                                // containing the function and
                                // you store it into global


}(window));
4 голосов
/ 11 июля 2011

В Javascript функцию можно сохранить в переменной (так как это в основном объект).

Вы можете сделать что-то подобное, используя замыкание:

(function (global) {

  global.something= function () {
      // do something, return something
  };

}(this));

Помните,если вы пишете () после имени функции, это означает, что вы ее выполняете.Если вы хотите передать саму функцию, вы просто пишете ее имя.

Рассмотрите этот пример:

var x = something(); //x will hold the RETURN value of 'something'
var y = something; //y will hold a reference to the function itself

Итак, после выполнения 2-го примера вы можете сделать: var x = y();, который будетна самом деле дать вам тот же результат, если вы просто сделали 1-й пример.

1 голос
/ 11 июля 2011
(function (global) {

  global.something = function()
  {
    // do something, return something
  }

}(this));

Обновленный вопрос:

<body onload="javascript:something()">

Это не будет работать.Попробуйте вместо этого:

<body onload="something()">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...