2011-02-16 52 views
2

是什麼這之間的區別:的JavaScript創建功能

var doSomething=function() 
{ 
    //do blah blah blah... 
} 

而且這樣的:

function doSomething() 
{ 
    //do blah blah blah... 
} 

另一個問題: 在PHP中,我們做這個創建一個函數:

function doSomething(a,b) 
{ 
    //do something to variable a and b... 
} 

在JavaScript中,我們可能在函數之前有一個對象:

object.doSomething(a); 

我的第二個問題是,如何創建一個需要JavaScript中的對象的函數?

+0

不同之處在於第二個函數是在腳本塊的分析時定義的,而第一個函數是在運行時定義的 – 2011-02-16 02:11:50

+0

可能重複的[var functionName = function(){} vs function functionName(){}](http://stackoverflow.com/questions/336859/var-functionname-function-vs-function-functionname) – Malachi 2015-07-13 19:53:23

回答

1

var fun = function() {}function fun() {}之間的區別在於,在第一種情況下它存儲在變量fun中。要調用該函數,您必須致電fun()。把它放在一個變量中可以讓你傳遞函數。

您可以通過使用功能

function MyClass() { 
    this.fun = function() { alert('Hello world'); } 
} 

var obj = new MyClass(); 
obj.fun(); 

或JSON

var obj = { 
    fun: function() { alert('Hello world'); } 
}; 

obj.fun(); 

你可以用新的功能進一步擴展的對象或他們的原型創建對象。

編輯。對不起,錯誤的答案是:不應該在凌晨4點嘗試做這些事情。

+2

@Aleksi:即使是第二個函數,你也需要調用fun();在某一點。 – Praneeth 2011-02-16 02:11:08

+1

這兩種情況都不是立即執行的功能。要立即調用函數,它必須是var fun = function(){}();或函數fun(){}() – Jeff 2011-02-16 02:11:25

0

一次一個問題。

要回答你的第一個問題,沒有太大的區別。

function doSomething() {} 

是技術上等同於:

var doSomething; 
doSomething = function() {}; 

技術上發生了什麼在這種情況下是變量的聲明得到hoisted到腳本的頂部。

0

對於問題的第二部分,我們只是做類似

object.doSomething = function(a) { ... } 

這是一個原因文字的功能是非常有用。