这些代码有什么区别?
1- move : function(a,b){
.
.
.
}
2- function move(a,b){
.
.
.
}
我知道第二部分是一个功能,但我对第一部分一无所知?你能回答我吗?
答案 0 :(得分:4)
您的第一个示例本身就是无效的JavaScript。您可能将它视为某个库中某个非常大的对象初始化的一部分;即:
var Library = {
// ...lots of lines
move: function(a, b) { /*...*/ },
// ...lots more lines
};
在这种情况下,它与您在任何属性初始化中看到的:
相同。与此相同:
var object = {
foo: 1,
bar: 2
};
答案 1 :(得分:0)
第一个是对象的一部分(或应该是),并将一个函数定义为该对象的属性,而第二个定义当前作用域中的函数move()
。
答案 2 :(得分: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');
}
}
答案 3 :(得分: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";
}
?
说“如果是真的话”,:
与“其他”相同。
答案 4 :(得分:0)
它本质上是函数表达式和函数声明之间的区别。您可以在MDN
上详细了解此信息<强> TL:博士; 强> 一个在加载时解释,另一个在运行时解释。
答案 5 :(得分: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和4在外部范围内有一个名为some_function
的函数。否则它们是相同的。