2013-06-30 3 views
0
function shortUrl() { 
$['post']('http://tinyurl.com/api-create.php?url=http://json-tinyurl.appspot.com/', function (a) { 

}); 
}; 

Я хочу сделать эту функцию как var, поэтому я могу использовать shortUrl Anywhere в моем скрипте. КакОбъявление функции как переменная

var shortaddress = shortUrl(); 

Я хочу использовать результат в следующей функции.

+2

Добро пожаловать в чудесный мир ** async **! Вы не можете этого сделать. – SLaks

+1

'shortUrl' * is * уже переменная. Я не совсем уверен, чего вы пытаетесь достичь. –

+0

ну, я хочу использовать shorturl в следующей функции. – Johan

ответ

7
function shortUrl() {...} 

эквивалентно

var shortUrl = function() {...}; 

Таким образом, это уже переменная.

+0

, пожалуйста, опишите его немного с моим скриптом. Новый javascript :( – Johan

+4

Это * не * эквивалент, хотя это похоже. 1) Объявление функции поднимается и; 2) вторая форма не имеет имени функции; 3) объявление функции может * только * отображаться как оператор верхнего уровня (т. Е. Он * не может * отображаться в результатах 'if') или« не-браузер ». Просто мало что нужно знать. – user2246674

1

Функция уже является переменной, поэтому вы можете использовать ее как таковую. Например:

function foo() { 
    // ... 
}; 

более или менее такой же, как

var foo = function() { 
    // ... 
}; 

В принципе, если отбросить скобки и аргументы (foo вместо foo()), вы можете использовать любую функцию как обычную переменную.

Таким образом, вы можете, например, назначить его на другие переменные, как вы это обычно:

var bar = foo; // note: no parentheses 
bar();   // is now the same as foo() 

Или вы можете передать его в качестве аргумента другой функции:

function callFunc(func) { 
    func(); // call the variable 'func' as a function 
} 

callFunc(foo); // pass the foo function to another function 
+0

dint undrstood the last part ... function callFoo (func) { func(); // вызываем переменную «func» как функцию } callFunc (foo); // передаем функцию foo другой функции –

0

Если вы хотите используйте функцию shortUrl в любом месте, она должна быть объявлена ​​в глобальной области. Тогда эта переменная становится свойством объекта Window. Например следующие переменные

<script type="text/javascript"> 
    var i = 123; 
    function showA(){ alert('it'); window.j = 456; } 
    var showB = function() { alert('works'); var k = 789; this.L = 10; } 
</script> 

объявляются непосредственно в объекте Window и стать его атрибуты. Таким образом, теперь их можно легко получить из любого скрипта. Например, работают все следующие команды:

<script type="text/javascript"> 
    alert(i); alert(window.i); 
    showA(); window.showA(); 
    showB(); window.showB(); 
    alert(j); alert(window.j); 
    alert(new showB().L); // here the function was called as constructor to create a new object 
</script> 

Функции в javascript - это объекты, поэтому они могут хранить атрибуты сами по себе.
В приведенном выше примере вы можете считать переменную k частным, а переменная L - общедоступным объектом (или функцией) showB. И еще один пример: если вы включаете библиотеку jQuery на свою страницу, jQuery обычно предоставляет себя как window.jQuery или window.$. Просто рекомендуется использовать глобальные переменные очень осторожно и осторожно, чтобы предотвратить возможные конфликты.

Смежные вопросы