0

这些代码有什么区别?

1- move : function(a,b){ 
.  
.  
.  

}  
2- function move(a,b){
.  
.  
.  
}  

我知道第二部分是一个函数,但我对第一部分一无所知?你能回答我吗?

4

6 回答 6

4

您的第一个示例本身就是无效的 JavaScript。您可能将其视为某个库中某个非常大的对象初始化的一部分;IE:

var Library = {
  // ...lots of lines

  move: function(a, b) { /*...*/ },

  // ...lots more lines
};

在这种情况下,:您在任何属性初始化中看到的都是一样的。与此相同:

var object = {
  foo: 1,
  bar: 2
};
于 2013-08-05T21:41:43.370 回答
0

请注意,Javascript 中的函数本身就是对象(因此也是变量)。

所以这些都完成了同样的事情:

1

var some_object = {};
some_object.do_something = function () {
    // function code
};

2

var some_object = {
    do_something: function () {
        // function code
    }
}

3

var some_object = {};
var some_function = function () {
    // function code
};
some_object.do_something = some_function;

4

var some_object = {};
function some_function () {
    // function code
};
some_object.do_something = some_function;

它们之间的唯一区别(可能与您无关)是 3 和 4some_function在外部范围内调用了一个函数。否则它们是相同的。

于 2013-08-05T21:59:27.147 回答
0

冒号通常用于定义对象的属性,例如

obj = {
    myProp: "String",
    myFunc: function() {
        console.log('hello');
    }
}

console.log(obj.myProp);
obj.myFunc();

它们还用于三元运算符,例如

x = ( y >= 2 ) ? "greater" : "not greater";

是相同的

if (y >= 2)
{
    x = "greater";
}
else
{
    x = "not greater";
}

其中?说“如果为真”,:则与“其他”相同。

于 2013-08-05T21:46:36.807 回答
0

它本质上是函数表达式和函数声明之间的区别。您可以在MDN上详细阅读此内容

tl:博士; 一个在加载时被解释,另一个在运行时被解释。

于 2013-08-05T21:46:59.687 回答
0

第一个是对象的一部分(或应该是),并将函数定义为该对象的属性,而第二个定义move()当前范围内的函数。

于 2013-08-05T21:41:45.790 回答
0

(1)move通常是一个属性,并且您正在为该属性分配一个函数。它是其他代码的一部分,并不独立。例子:

var myObj = {
    sayHello: function() {
        console.log('Hello');
    },
    sayBye: function() {
        console.log('Bye');
    }
}

然后你可以像这样使用它:

obj.sayHello();
obj.sayBye();

(2)正如你所说,它只是一个名为的函数move

因此,您也可以“结合”两者:

function myHello(){
    console.log('Hello');
}

var myObj = {
    sayHello: myHello,
    sayBye: function() {
        console.log('Bye');
    }
}
于 2013-08-05T21:42:24.033 回答