2013-08-05 31 views
0

這些代碼有什麼區別?在JavaScript中有什麼用法?

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

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

我知道第二部分是一個函數,但我不知道關於第一部分的任何事情?你能回答我嗎?

+4

我猜在第一個例子中有更多的代碼,比如周圍的對象文字。 – adeneo

+0

http://stackoverflow.com/q/336859可能會感興趣。 –

回答

0

請注意,JavaScript中的函數本身就是對象(因此也是變量)。

所以這些都完成同樣的事情:

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

這些與您無關的區別僅在於3和4在外部範圍內有一個稱爲some_function的功能。否則它們是相同的。

4

你的第一個例子是JavaScript本身無效。您可能將它看作某個庫中非常大的對象初始化的一部分;即:

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

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

    // ...lots more lines 
}; 

在它是你在任何財產初始化看到相同:這種情況下。與此相同:

var object = { 
    foo: 1, 
    bar: 2 
}; 
0

第一個是一物體的一部分(或應是),並定義了一個函數作爲該對象的屬性,而第二限定在當前範圍的功能move()

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'); 
    } 
} 
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"; 
} 

其中?時說: 「如果爲true」,而:是一樣的 「其他」。

0

它實質上是函數表達式和函數聲明之間的區別。你可以在MDN

tl:dr; 一個在加載時獲得解釋,另一個在運行時解釋。

+0

這可能是更準確的說,一個人獲得[懸掛](http://elegantcode.com/2011/03/24/basic-javascript-part-12-function-hoisting/),而另一個不(儘管變量聲明在兩種情況下均可用)。 – voithos

相關問題