JavaScript函数声明

时间:2009-12-08 10:33:00

标签: javascript function-declaration

下面给出了某些函数声明的JavaScript代码片段吗?如果不是,有人可以概述一下它们是什么吗?

some_func = function(value) {
    // some code here
}

show:function(value){
   // some code here
}

8 个答案:

答案 0 :(得分:72)

六种方式/上下文来创建函数:

1)标准声明符号(对于具有C背景的人最熟悉)

function foo() {}

所有其余的都是函数表达式

2)作为对象文字的方法

var obj = {
    foo: function() {}
};

3)作为实例化对象的方法(每次new被创建时创建)

var Obj = function() {
    this.foo = function() {};
};

4)作为原型的方法(只创建一次,无论执行new多少次)

var Obj = function() {};
Obj.prototype.foo = function() {};

5)作为带引用的匿名函数(与#1效果相同)*

var foo = function() {};

6)作为一个立即执行的匿名函数(完全匿名)

(function() {})();

*当我看这个陈述时,我会考虑结果。因此,我并不认为这些是匿名的,因为会立即为函数创建引用,因此不再是匿名的。但对大多数人来说都是一样的。

答案 1 :(得分:25)

第一个是创建匿名函数并将其分配给变量some_func。因此,使用some_func()将调用该函数。

第二个应该是对象符号的一部分

var obj = {
  show:function(value){
    // some code here
  }
};

因此,obj.show()将调用函数

在这两种情况下,您都在创建匿名函数。但在第一种情况下,您只是将其分配给变量。而在第二种情况下,您将其指定为对象的成员(可能在许多其他对象中)。

答案 2 :(得分:4)

首先是具有指定匿名函数的本地(或全局)变量。

var some_name = function(val) {};
some_name(42);

第二个是具有指定匿名函数的某个对象(或带有标签的函数)的属性。

var obj = {
    show: function(val) {},
    // ...
};
obj.show(42);

函数是JavaScript中的一等公民,因此您可以将它们分配给变量并从变量中调用这些函数。

您甚至可以使用其他名称声明函数,而不是将赋值该函数的变量。当你想定义递归方法时很方便,例如代替:

var obj = {
    show: function(val) {
        if (val > 0) { this.show(val-1); }
        print(val);
    }
};
你可以写:

var obj = {
    show: function f(val) {
        if (val > 0) { f(val-1); }
        print(val);
    }
};

答案 3 :(得分:2)

一种方法:

var some_func = function(value) {  
    // some code here
}

另一种方式:

function some_funct() {
}

另一种方式:

var some_object={};
some_object["some_func"] = function() {};

或:

var some_object={};
some_object.some_func = function() {};

换句话说,它们有很多方法可以在JS中声明一个函数。


你的第二个例子不正确。

答案 4 :(得分:1)

第一个是分配给变量的函数声明(至少它应该是,尽管它首先缺少变量类型声明),第二个可能与对象声明有关。

答案 5 :(得分:1)

它们被称为匿名函数;你可以在这里阅读更多关于它们的信息:

http://www.ejball.com/EdAtWork/2005/03/28/JavaScriptAnonymousFunctions.aspx

答案 6 :(得分:1)

第一个示例创建一个名为some_func的全局变量(如果该名称的本地变量尚不存在),并为其分配一个函数,以便可以调用some_func()。 / p>

第二个例子是对象内的函数声明。它将一个函数指定为对象的show属性的值:

var myObj = {
    propString: "abc",
    propFunction: function() { alert('test'); }
};

myObj.propFunction();

答案 7 :(得分:0)

第一个......

some_func = function(value) {  
    // some code here
}

声明一个变量并为其分配anonymous function,相当于......

function some_func (value) {  
    // some code here
}

第二个应该是这样的......

obj = {
    show:function(value){
       // some code here
    }
}
// obj.show(value)

等同于......

//pseudo code
class MyClass {
    function show (value) {
        // some code here
    }
}
obj = new MyClass();    // obj.show(value)

干杯