2010-08-16 8 views
12

अगर मैं नहीं कर रहा हूँ गलत eval एक दिया स्ट्रिंग में मान्य कोड निष्पादितलोग क्यों कहते हैं कि जावास्क्रिप्ट eval() बुरा है लेकिन आप setTimeout और setInterval आदि के खिलाफ कोई आपत्ति नहीं है?

eval("alert('hey')"); 

और

setTimeout("alert('hey')",1000); 

, एक टाइमर के साथ सिर्फ एक ही बात के बारे में है। evout के रूप में बस के रूप में जोखिम भरा सेट है?

+3

अच्छा सवाल :) और मुझे लगता है कि जवाब है हां यहाँ अधिक http://stackoverflow.com/questions/197769/when-is-javascripts-eval-not- बुराई – mplungjan

उत्तर

20

मैं कहूंगा कि आप एक ही आपत्ति सुनते हैं। setTimeout (स्ट्रिंग के साथ और फ़ंक्शन पैरामीटर नहीं) बहुत अधिक eval जैसा ही है।

यदि संभव हो,

setTimeout(function(){ alert ("hey") ; }, 1000); 
+0

'setTimeout' के उचित उपयोग का उदाहरण प्रदान करने के लिए –

+8

+1 संभव नहीं होना चाहिए। एक स्ट्रिंग तर्क को पारित करने की क्षमता ने लोगों को जावास्क्रिप्ट –

+0

+1 का उपयोग करने के तरीके के मुकाबले अधिक नुकसान पहुंचाया है, ऐसा लगता है कि मेरे कोड को कुछ सुरक्षा परिवर्तनों की आवश्यकता है;) धन्यवाद, हम्म मुझे बिल्कुल पता नहीं था कि आप टाइमआउट का उपयोग इस तरह से कर सकते हैं –

4

क्योंकि जब लोग "eval" कहते हैं, तो उनका मतलब है "eval और कोई भी कार्य जो कम से कम eval के बराबर है", लेकिन पूर्व कहने के लिए बहुत छोटा है। तो आपके प्रश्न का उत्तर हाँ है, यह जोखिम भरा है।

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