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