将函数声明为变量

时间:2013-06-30 19:46:28

标签: javascript

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

});
};

我想将此功能作为var,因此我可以在脚本中使用shortUrl Anywhere。像

var shortaddress = shortUrl ();

我想在下一个函数中使用结果。

3 个答案:

答案 0 :(得分:7)

function shortUrl () {...} 

相当于

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

所以,它已经是变量了。

答案 1 :(得分: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

答案 2 :(得分: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.jQuerywindow.$对象。通常建议非常谨慎地使用全局变量来防止可能的冲突。