विफल रहता है, जहां "नया फ़ंक्शन का उपयोग न करें" और/या "eval बुरा है" पर एक लंबी टिप्पणी अनुभाग को शॉर्टकट करने के लिए, यह प्रश्न इस बारे में है कि यदि संभव हो तो कैसे पहुंचें, new Function()
कन्स्ट्रक्टर विफल होने से संबंधित त्रुटि जानकारी। स्पेस और मानक ब्राउज़र कार्यान्वयन की अनुमति के लिए जावास्क्रिप्ट का फायदा उठाने का प्रयास करते समय ब्राउजर मुझे क्या करने देगा, इस बारे में एक सीमा की खोज करने के लिए ज्यादातर सवाल है। तो उस अस्वीकरण के साथ:पता लगाएं कि नया फ़ंक्शन()
किसी नए फ़ंक्शन() कॉल के माध्यम से कोड का मूल्यांकन करते समय, क्या यह पता लगाने का कोई तरीका है कि फ़ंक्शन की सामग्री में सिंटैक्स त्रुटि होती है, अगर अवैध-वाक्यविन्यास कोड का मूल्यांकन किया जा रहा है? यानी .:
try {
var generator = new Function(input);
try {
generator();
}
catch (runtimeError) {
console.error("legal code; unforeseen result: ", runtimeError);
}
}
catch (syntaxError) {
console.error("illegal code; syntax errors: ", syntaxError);
}
जब जनरेटर के निर्माण में विफल रहता है, वहाँ (से ब्राउज़र, jslint का उपयोग नहीं कर या किसी अन्य बाहरी पुस्तकालय) पता लगाने के लिए क्या त्रुटि थी या यह जहां हुआ एक तरीका है?
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SyntaxError/prototype का उल्लेख एक सिंटैक्स त्रुटि एक filename
और linenumber
संपत्ति है, लेकिन इन एक नया समारोह() मैं क्या बता सकता से निर्माता के माध्यम से मूल्यांकन किया जाता गतिशील कोड के लिए अपरिभाषित हैं, तो त्रुटि वस्तु पर ही भरोसा एक विकल्प हो करने के लिए नहीं लगता है । ब्राउज़र में कोड को पेश करने के वैकल्पिक तरीके हैं ताकि कोड, एक बार जब हम जानते हैं कि इसमें असफल नए फ़ंक्शन कॉल से सिंटैक्स त्रुटियां हैं, तो यह पता लगाने के लिए उपयोग किया जा सकता है कि समस्या जेएस इंजन के अनुसार कहां है?
(बेशक, यदि लक्ष्य केवल सिंटैक्स त्रुटियों को ढूंढना था, तो प्रीप्रोसेस चरण के रूप में जेस्लिंट जाने-माने समाधान होगा, लेकिन मुझे इस बात से अधिक दिलचस्पी है कि ब्राउज़रों को रिपोर्ट करने के लिए कुछ तरीके से किया जा सकता है या नहीं यह जानकारी, भले ही सीमित रूप में "लाइन/चार पर कुछ त्रुटि है ..."
मुझे एक समाधान मिला है, लेकिन कोड चलाने में त्रुटियों को पकड़ने पर विचार नहीं किया गया था, यह एक उपयोगी जोड़ है। –
वह उदाहरण एक रनटाइम अपवाद है (विशेष रूप से, एक संदर्भ त्रुटि), एक सिंटेक्स त्रुटि नहीं! बीटीडब्ल्यू, आपका उदाहरण वास्तव में लॉग इन करता है जहां त्रुटि हुई: 'लाइन 1 पर फेंकने में त्रुटि, <अज्ञात फ़ंक्शन>() में कॉलम 0: कॉलंडिफाइन फ़ंक्शन(); लाइन 18 से कॉल किया गया, कॉलम 4 <अज्ञात फ़ंक्शन>() में http://run.jsbin.com/runner में: जनरेटर(); लाइन 11 से कॉल किया गया, कॉलम 7 http://run.jsbin.com/runner में: (function() {' – Bergi
उसने किया? त्रुटि पर आपने किस संपत्ति/विधि का उपयोग किया? डॉकू में कोई जानकारी नहीं मिली या उदाहरण में (क्रोम में भाग गया) – floww