2011-01-31 10 views
5

संभव डुप्लिकेट:
JavaScript: var functionName = function() {} vs function functionName() {}जावास्क्रिप्ट में इन दो फ़ंक्शन घोषणाओं के बीच क्या अंतर है?

जावास्क्रिप्ट में हम कह सकते हैं:

function a() {}; 

या हम कह सकते हैं

var a = function() {}; 

सीए n कोई मुझे बताता है कि यह वास्तव में कितना अलग है, जो, यदि कोई है, तो अधिक बेहतर है, और किस परिस्थिति में प्रत्येक का उपयोग किया जाएगा?

किसी भी लिंक या बाहरी पढ़ने की भी सराहना की जाएगी।

+0

जहाँ तक मुझे पता है वहाँ कोई अंतर नहीं है , सिवाय इसके कि केवल बाद के तरीके वस्तुओं में इस्तेमाल किया जा सकता है। – pimvdb

+1

@pimvdb एक बहुत बड़ा [अंतर] है (http://bonsaiden.github.com/JavaScript-Garden/#functions)। – Raynos

उत्तर

0

एक फ़ंक्शन घोषणा है, दूसरा एक कार्य घोषित करने वाला ऑब्जेक्ट है। यह लगभग हर ऑब्जेक्ट उन्मुख जावास्क्रिप्ट ट्यूटोरियल का आधार है।

+0

जेएस में प्रत्येक कार्य भी एक वस्तु नहीं है? – Simon

+0

@ सिमोन हां। (लगभग) सब कुछ एक वस्तु है – Raynos

2

सबसे पहले करने के लिए नीचे

function a() {}; 

यह या तो FunctionDeclaration या FunctionExpression हो सकता है। हम केवल यह जान सकते हैं कि यह फ़ंक्शन डिक्लेरेशन या फ़ंक्शन एक्स्प्रेशन है, जहां संदर्भ दिखाई देता है।

उदाहरण # 1)

0,function a() {} //FunctionExpression 

उदाहरण # 2)

(function a() {}()); //FunctionExpression 

उदाहरण # 3)

var b = function a() {}; //FunctionExpression 

उदाहरण # 4)

foo(function a(){}); //FunctionExpression 

दूसरा

var a = function() {}; 

यह स्पष्ट रूप से दो कारणों के लिए एक FunctionExpression है।

1) एक काम

2) अज्ञात फ़ंक्शन

उपयोगी लिंक की दाहिने हाथ की ओर:

http://sweatte.wordpress.com/syntax/javascript-idioms-and-gotchas/

http://www.ecma-international.org/publications/standards/Ecma-262.htm

संबंधित मुद्दे