अगर मैं एक स्क्रिप्ट जिसका एकमात्र स्रोत लाइन एक वस्तु है निष्पादित करने के लिए प्रयास करें:जावास्क्रिप्ट में एक वाक्यविन्यास त्रुटि पर एक अज्ञात फ़ंक्शन क्यों है?
{prop:'value'}
यह ठीक से पार्स (दोनों V8 और UglifyJS में)। इसी तरह मैं स्रोत कोड के रूप में स्वयं एक स्ट्रिंग या संख्या डाल सकता हूं और कोई वाक्यविन्यास त्रुटि रिपोर्ट नहीं की गई है।
हालांकि, दोनों V8 और UglifyJS अपने आप ही इस बारे में शिकायत:
function(){}
मैं Uncaught SyntaxError: Unexpected token (
मिलता है।
यह तो क्यों टूटता है जब पहले उदाहरण में ऑब्जेक्ट ठीक है? जावास्क्रिप्ट में सिर्फ ऑब्जेक्ट्स नहीं हैं?
मुझे एहसास हुआ कि बिना किसी अज्ञात फ़ंक्शन को निष्पादित किए बिना यह कुछ भी नहीं करेगा; यह सवाल नहीं है। मैं जानना चाहता हूं कि यह एक पार्स त्रुटि क्यों उत्पन्न करता है।
वैसे यह एक फ़ंक्शन नाम गायब है क्योंकि फ़ंक्शन घोषित करने से नियम 'फ़ंक्शन [नाम]() {[code]}' होता है, इसलिए वास्तविक प्रश्न हो सकता है: ऐसे विशेष परिस्थितियां क्यों हैं जहां आप एक अज्ञात फ़ंक्शन बना सकते हैं? – yoshi
एक "अज्ञात फ़ंक्शन" वैकल्पिक नाम के बिना एक फ़ंक्शन अभिव्यक्ति अधिक सही ढंग से है (देखें [FunctionExpression] (http://ecma-international.org/ecma-262/5.1/#sec-A.5))। – RobG
दिलचस्प क्या है बस कुछ ऑपरेटर जोड़ें और यह काम करता है :) '! फ़ंक्शन() {}; + फ़ंक्शन() {};' – abuduba