2017-02-22 63 views
0

Если бы я хотел сначала объявить функцию, а затем в какой-то момент я хочу ссылаться на функцию, а не на ее возвращаемое значение для переменной, как бы я это сделал?Как указать уже объявленную функцию javascript на переменную

var best = bestPresidentEver; 


function bestPresidentEver(a,b){ 
    //for some reason always returns Trump. 
} 

and then call best(a,b) instead of bestPresidentEver(a,b) 

Мне интересно, как это сделать, чтобы назначить функцию для объявления var.

var best = 
function bestPresidentEver(a,b){ 
    //for some reason always returns Trump. 
} 
+0

достаньте 'var' – Ryan

+0

Это звучит как [проблемы] XY (http://meta.stackexchange.com/a/66378/140350). Какую проблему вы пытаетесь решить, объявив/ссылаясь на функцию таким образом? –

+1

Удалите часть «Trump», и все будет в порядке. ;) –

ответ

1

Объявите переменную как этот

var bestPresidentEver= function (a,b){ 
    //for some reason always returns Trump. 
    return "Trump"; //:D 
} 

Затем вызовите эту функцию как этот

//You have to declare a and b variables 
var trumpHere = bestPresidentEver(a,b); 

Если функция уже объявлена, просто присвоить его переменной:

function bestPresidentEver (a,b){ 
    //for some reason always returns Trump. 
    return "Trump"; //:D 
} 

var trumpHere = bestPresidentEver; 

Затем позвоните это нравится:

var trumpAgain = trumpHere(a, b); 
+0

Вы должны объявить эту переменную/функцию перед ее вызовом или получите ошибку 'undefined variable bestPresidentEver' –

+1

Это общее соглашение использовать только' '' как ведущую символ в идентификаторе, когда этот идентификатор является объектом библиотеки, например, объект JQuery. –

+1

Я знаю: D, но это Трамп, о котором мы говорим: D –

1

Если переменная существует, и это не const вы можете просто передать это значение самой функции. Ex

var foo = 'foo'; 
function bar(a) { 
    return 'example ' + a; 
} 
bar('code'); //=> "example code" 

/* Further down, reassign the `foo` variable */ 
foo = bar; 
foo('code, again'); //=> "example code, again" 

Я использую SignalR, и мне нужно указать его функции, и я также хочу называть эту функцию в других областях применения.

Если библиотека ожидает параметр функции, вы можете просто передать эту функцию так.

function first(next /* expects a function parameter */) { 
    return next('hello'); 
} 

function second(prefix) { 
    return prefix+ ' world!'; 
} 
first(second); //=> "hello world!" 
+0

Спасибо, Nick, как сигнал SignalR ожидает, что функция такая, $ connection.Hub.client.YouPickNameOfFunction = function (a, b) {}; Я все еще изучаю Javascript и могу делать с ним много чего, но я застрял в понимании того, как указывать уже объявленную функцию (с параметрами) на переменную, поскольку мне не приходилось это делать раньше, и я не удалось найти однозначный ответ, который можно было бы просто найти. Я собирался отказаться от вызова функции в анонимных функциях, но я хотел сделать что-то наиболее эффективным. – eaglei22

+0

Все, что вам нужно сделать в этом случае - это то, что я показал в первом блоке кода. Параметры, которые вы передадите при вызове функции (или будут переданы библиотекой, когда она сама ее вызовет, если таковая будет выполнена). Однако, если вы хотите указать значения для этих параметров до вызова fn, вам необходимо использовать [Function.prototype.bind] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/ Global_objects/Функция/связывающийся) – Nick