javascript - examples - eval जावास्क्रिप्ट, वाक्यविन्यास त्रुटि के लिए जाँच करें



w3schools jquery (3)

Eval के लिए मोज़िला प्रलेखन के अनुसार:

eval मूल्यांकन किए गए अंतिम अभिव्यक्ति का मूल्य देता है।

इसलिए मुझे लगता है कि आप भाग्य से बाहर हो सकते हैं। यह वही दस्तावेज eval का उपयोग करने के खिलाफ भी सिफारिश करता है:

eval () एक खतरनाक फ़ंक्शन है, जो उस कोड को निष्पादित करता है जिसे कॉल करने वाले के विशेषाधिकार के साथ पास किया गया है। यदि आप दुर्भावनापूर्ण पार्टी से प्रभावित होने वाले स्ट्रिंग के साथ eval () चलाते हैं, तो आप अपने वेबपेज / एक्सटेंशन की अनुमति के साथ उपयोगकर्ता की मशीन पर दुर्भावनापूर्ण कोड चला सकते हैं। इससे भी महत्वपूर्ण बात यह है कि थर्ड पार्टी कोड उस दायरे को देख सकता है, जिसमें इवैल्यूशन () लागू किया गया था, जिससे संभव तरीके से ऐसे हमले हो सकते हैं जिनमें समान फंक्शन अतिसंवेदनशील न हों।

इस तरह से, इस फ़ंक्शन का उपयोग करने से पहले जोखिमों के बारे में पता होना चाहिए।

https://src-bin.com

मैं यह जानना चाहता था कि क्या जावास्क्रिप्ट के माध्यम से पता लगाना संभव है अगर कॉल करने के लिए eval () में एक सिंटैक्स त्रुटि या अपरिभाषित चर है, आदि ... तो मैं कुछ मनमाना जावास्क्रिप्ट के लिए eval का उपयोग करने देता हूं कहता है कि त्रुटि आउटपुट पर कब्जा करने का एक तरीका है उस eval का?


Answer #1

आप JsLint उपयोग कर सकते हैं जिसमें एक जावास्क्रिप्ट पार्सर होता है जो जावास्क्रिप्ट में लिखा होता है। यह आपको आपके कोड के बारे में बहुत सारी जानकारी देगा, इसे और अधिक आराम से कॉन्फ़िगर किया जा सकता है या नहीं, आदि ...


Answer #2

किसी विशेष प्रकार की त्रुटि को पकड़ने के लिए ट्राई कैच का उपयोग करते समय, यह सुनिश्चित करना चाहिए कि अन्य प्रकार के अपवादों को दबाया नहीं गया है। अन्यथा यदि मूल्यांकन किया गया कोड एक अलग तरह का अपवाद फेंक देता है तो यह गायब हो सकता है और कोड के अप्रत्याशित व्यवहार का कारण बन सकता है।

मैं इस तरह से कोड लिखने का सुझाव दूंगा:

try {
    eval(code); 
} catch (e) {
    if (e instanceof SyntaxError) {
        alert(e.message);
    } else {
        throw( e );
    }
}

कृपया "और" खंड पर ध्यान दें।






eval