2012-12-23 14 views
8

मैं है कोड की निम्न बिटमैं स्ट्रिंग को जावास्क्रिप्ट में कोड की निष्पादन योग्य रेखा में कैसे परिवर्तित करूं?

console.log("I am"); 

var x = "console.log('Alive!')"; 

अब मैं केवल x उपयोग करने के लिए कोड-स्ट्रिंग है कि यह करने के लिए असाइन किया गया है निष्पादित करने के लिए चाहता हूँ - मैं भी उदाहरण के लिए एक्स का मान पता नहीं हो सकता, लेकिन बस करना चाहते हैं जो भी हो सकता है इसे निष्पादित करें - क्या यह संभव है?

+0

आह, मुझे ईडीआई याद है। – clintgh

उत्तर

5

आप के लिए क्या देख रहे हैं एक समारोह कहा जाता है:

function x() { 
    console.log('Alive!'); 
} 

तो x पहले से ही एक स्ट्रिंग कोड आप eval(x) इस्तेमाल कर सकते हैं यह निष्पादित करने के लिए उपयुक्त हैं। eval हालांकि बुराई है।

10

जो आप खोज रहे हैं eval() है। इस फ़ंक्शन को स्ट्रिंग पास करके आप स्ट्रिंग का मूल्यांकन जावास्क्रिप्ट कोड के रूप में करेंगे और यह स्ट्रिंग रिटर्न में कोड को जो भी रिटर्न-वैल्यू देता है उसे वापस कर देगा।

हालांकि इस फ़ंक्शन का उपयोग करते समय जागरूक रहें। आप किसी भी कोड का मूल्यांकन नहीं करना चाहते हैं जिसे आप नहीं जानते हैं निष्पादित करने के लिए सुरक्षित है। उदाहरण के लिए, उपयोगकर्ता द्वारा जेनरेट किए गए कोड को चलाने से आप जो कुछ भी कर रहे हैं उसे गड़बड़ कर सकते हैं। किसी वेबसाइट पर जावास्क्रिप्ट में इसका उपयोग करते समय यह संभवतः क्लाइंट-साइड पर समस्याएं पैदा करेगा और इसलिए शायद सुरक्षा खतरे में से अधिक नहीं होगा, उदाहरण के लिए कोड का मूल्यांकन करते समय आप बहुत सावधान रहना चाहेंगे उदाहरण के लिए सर्वर पक्ष।

जैसा कि अन्य पदों में संकेत दिया गया है, आप शायद मूल्यांकन किए गए स्ट्रिंग के बजाय फ़ंक्शन बनाना चाहते हैं यदि आप चलने वाले स्रोत कोड के नियंत्रण में हैं।

+0

आपके उत्तरों के लिए सभी को धन्यवाद, यही वह है जिसे मैं ढूंढ रहा था। समस्या यह है कि मैं एक स्क्रिप्ट की सामग्री को निष्पादित करता हूं जो document.write का उपयोग करता है और पूरे वेबपृष्ठ को ओवरराइट करता है। मैं इसके आसपास कैसे काम कर सकता हूं और केवल HTML दस्तावेज़ में तत्वों को जोड़ सकता हूं और पूरी तरह से बाकी सब कुछ ओवरराइट नहीं कर सकता? gues एक पूरी तरह से topi है लेकिन मेरे मदद के लिए धन्यवाद, मेरे पास eval सवाल regaring! –

+0

हां, यह वास्तव में एक नया विषय है लेकिन यहां आपकी समस्या का एक त्वरित विवरण है: 'document.write' हमेशा पृष्ठ को साफ़ करेगा और दस्तावेज पूरी तरह से लोड होने के बाद निष्पादित होने पर नया बना देगा। इस प्रकार आपको इसके बजाय 'आंतरिक HTML' का उपयोग करने की आवश्यकता है। एक तत्व प्राप्त करें जिसे आप अपनी सामग्री को 'document.getElementById()' जैसे कुछ संपादित करना चाहते हैं और 'element.innerHTML =" output "' करें। –

+0

@AndreasHagen: यदि पृष्ठ पर कोई DOM नोड्स नहीं हैं, तो 'document.writeln' पूरे पृष्ठ को साफ़ किए बिना, एक पंक्ति लिखता है –

10

eval() यह स्ट्रिंग को जावास्क्रिप्ट कोड में परिवर्तित करेगा।

eval("console.log('Alive!')";); 
संबंधित मुद्दे

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