2010-03-12 20 views
9

अधिकतर जावास्क्रिप्ट कोड भी सिंटैक्टिक रूप से मान्य एक्शनस्क्रिप्ट 3.0 कोड है। ActionScript 3.0 मेंमान्य जावास्क्रिप्ट कोड जो वैध एक्शनस्क्रिप्ट 3.0 कोड नहीं है?

कौन सा निर्माण/जावास्क्रिप्ट में सुविधाओं वाक्य रचना अवैध हैं: हालांकि, कुछ अपवादों को छोड़कर जो मुझे मेरे सवाल की ओर जाता है कर रहे हैं? कृपया जावास्क्रिप्ट कोड (मूल जावास्क्रिप्ट कोड डीओएम एपीआई उपयोग के बिना) के ठोस उदाहरण प्रदान करें जो वैध एक्शनस्क्रिप्ट 3.0 कोड नहीं है।

+0

जावास्क्रिप्ट 'eval()' function? –

+1

हालांकि eval लागू करने के लिए असंभव नहीं है। http: //eval.hurlant।कॉम/डेमो – spender

+0

डाउन-वोट क्यों? – knorv

उत्तर

8

आप var बयान का उपयोग किए बिना जे एस में एक चर घोषणा कर सकते हैं। एक्शनस्क्रिप्ट 3 में var कथन always required है।

निम्नलिखित मान्य जे एस है, लेकिन AS3 में एक संकलक त्रुटि फेंक देगा:

var foo = 6; 
bar = "bar"; 

आप किसी एकल गुंजाइश जे एस में एक चर redeclare कर सकते हैं एक त्रुटि के बिना:

var x = 5; 
var x; 

AS3 में, आप प्रत्येक स्कोप के लिए एक बार एक चर घोषित कर सकते हैं।

2

एक्शनस्क्रिप्ट 1 जावास्क्रिप्ट के बहुत करीब है। एक्शनस्क्रिप्ट 3 अब निष्क्रिय ECMAScript 4 spec का पालन करता है।

// oops! 
var let = "Hello"; 
var yield = "World"; 
6

स्पष्ट वाले 4 खोजशब्दों को 3 संस्करण ECMAScript 262 में भविष्य आरक्षित शब्द नहीं थे ECMAScript हैं।

इसके अलावा, RegExp() कन्स्ट्रक्टर कम से कम स्ट्रिंग के साथ काम नहीं करता है। दूसरे शब्दों में, आप यह नहीं कह सकते:

var rex:RegExp = new RegExp("[a-zA-Z0-9]+","gim"); 

आपके पास इस तरह यह लिखने के लिए:

var rex:RegExp = new RegExp(/[a-zA-Z0-9]+/gim); 

दूसरे शब्दों में, आप स्ट्रिंग तर्क के कुछ हिस्सों के लिए चर प्रतिस्थापन नहीं कर सकते।

+0

डाउन-वोट क्यों? मेरे द्वारा +1! – knorv

+0

@knorv: मैंने मूर्खतापूर्वक मेटा.स्टैकओवरफ्लो डॉट कॉम पर प्राप्त किए गए डाउनवॉट्स के बारे में शिकायत की। वहां लोगों ने स्पष्ट रूप से सोचा कि यह मेरे जवाब को और भी कम करने के लिए हानिकारक होगा। –

+0

एंडी ई: ठीक है, यह बताता है। आशा है कि आपका जवाब उखाड़ फेंक दिया जाएगा क्योंकि यह एक अच्छा जवाब है। – knorv

2

एक बात के लिए, eval() विधि काम नहीं करेगा:

+1

दस्तावेज़ों का सुझाव है कि आप 'RegExp' कन्स्ट्रक्टर को तर्कों के लिए तारों का उपयोग कर सकते हैं, यह समझ में नहीं आता है - अगर आप बस पास कर रहे हैं तो कन्स्ट्रक्टर का उपयोग करके कोई फायदा नहीं होगा वैसे भी एक शाब्दिक। लिंक: http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/RegExp.html –

+0

@AndyE: हाँ, मुझे पता है कि यह समझ में नहीं आता है। मैं बस रिपोर्ट कर रहा हूं कि यह मेरे लिए काम नहीं करता है, और हाल ही में। – Robusto

+0

कोड के दोनों संस्करण संकलित और फ्लैश सीएस 4 में ठीक काम करते हैं। – fenomas

2

ठीक है, आप अलर्ट (और कुछ अन्य जेएस ग्लोबल फ़ंक्शंस), ऑनसाउसओवर, ऑनलोड इत्यादि (जेएस इवेंट हैंडलर), जो कुछ भी फॉर्म-संबंधित या ब्राउज़र से संबंधित है (जैसा कि आप सुझाव देते हैं) का उपयोग नहीं कर सकते हैं। आप जेएस कोड को एएस 3 कक्षा में कॉपी और पेस्ट नहीं कर सकते क्योंकि एएस 3 दृढ़ता से टाइप किया गया है और आप कंपाइलर त्रुटियां प्राप्त कर सकते हैं (इसके अलावा, जेएस में आपके पास कोई कक्षा नहीं है)।

4

AS3 एक बहुत मजबूत टाइप किए हुए है, और पारंपरिक रूप OO, जावास्क्रिप्ट (और AS2) की तुलना में भाषा, इसलिए प्रोटोटाइप के सभी हेरफेर बाहर है। यह शायद सबसे बड़ा अंतर है, आईएमओ, क्योंकि इसका मतलब है कि jQuery जैसी कुछ वास्तव में एएस 3 में काम नहीं कर सकती है।

के रूप में बताया गया, स्थानीय लोगों var साथ घोषित किया जाना चाहिए। इसके अलावा, untyped चर और redeclared चर संकलक चेतावनी उत्पन्न करते हैं।

आप आम तौर पर मिल जाएगा वहाँ अन्य तरीके से अधिक उदाहरण के आसपास है कि (AS3 कोड जावास्क्रिप्ट में मान्य नहीं किया जा रहा है)।

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