2012-02-05 13 views
6

कोड के दो स्निपेट (पहले प्रिंट "स्थानीय eval", दूसरा प्रिंट "ग्लोबल eval") पर विचार करें यह पता चला है कि globalEval === evaltrue, globalEval और evalअलग-अलग का व्यवहार करता है क्योंकि उनके पास अलग-अलग नाम हैं। (एक eval केवल स्थानीय हो सकता है अगर यह eval लिखा गया है।)भेद स्थानीय eval वैश्विक eval से

मैं दो evals के लिए कैसे अंतर कर सकते हैं? व्यवहार व्यवहार करने के लिए परिवर्तनीय लेबल निकालने का कोई तरीका है?

+0

@MattiVirkkunen: मैं [इस] का एक उदाहरण बनाने की कोशिश कर रहा हूं (http://stackoverflow.com/questions/7223517/pure-function-given-strictly-equal-arguments-yielding-non-strictly-equal -results)। मैं करीब हूँ, लेकिन अभी तक काफी नहीं है। – Randomblue

+0

आपने [अपने पिछले प्रश्न] (http://stackoverflow.com/questions/9145385/accessing-local-eval-inside- कार्यक्षमता -स्कोप) के साथ क्यों नहीं चिपकाया? –

+0

@amnotiam: यह अलग तरह का है, और मैं उलझन में आया। काश मैं इसे हटा सकता हूं। – Randomblue

उत्तर

2

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

आईई। myEvaluator.scope आपको बताएगा कि eval scope कैप्चर किया गया था, और myEvaluator.eval का मूल्यांकन करने के लिए उपयोग किया जा सकता था।

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