2012-07-26 11 views
20

इस पेज के साथ:"सख्त मोड" सक्षम करने के लिए संभव है; फायरबग और क्रोम के कंसोल में?

<!DOCTYPE html> 
<html> 
    <head> 
    <script> 
     "use strict"; 
     var foo = 2; 
     delete foo; 
    </script> 
    </head> 
    <body></body> 
</html> 

Firebug सांत्वना देता है:

applying the 'delete' operator to an unqualified name is deprecated 
>>> foo 
ReferenceError: foo is not defined 
foo 

लेकिन तब यह सफल होता है:

>>> var bar = 2; 
undefined 
>>> delete bar; 
true 

यहां तक ​​कि अगर तुम इतनी है कि स्क्रिप्ट को नहीं तोड़ता है delete foo; बाहर टिप्पणी , bar को हटाने के बावजूद यह अभी भी सफल है "यह एक वैश्विक वस्तु की संपत्ति है क्योंकि यह चर डी के माध्यम से बनाई गई है claration और इतने DontDelete attribute है: कठोर मोड ""

>>> foo 
2 
>>> delete foo 
false 
>>> var bar = 2; 
undefined 
>>> delete bar 
true 

सक्षम करने के लिए यह संभव है "; फायरबग और क्रोम के कंसोल में?

+1

मुझे आश्चर्य है अगर सांत्वना कोड() 'eval के माध्यम से पहुंचाया जा रहा है', DontDelete जो मामले में जिम्मेदार बताते हैं की तरह नहीं होगा सेट किया जाना – AJP

+0

... ठीक है, अगर मैंने अभी पढ़ा था तो अगला खंड: 'और यह फायरबग के असामान्य व्यवहार का सारांश है। कंसोल में सभी पाठों को पार्स किया गया है और उन्हें ग्लोबल या फंक्शन के रूप में नहीं, इवल कोड के रूप में निष्पादित किया जाता है। – AJP

+2

मैंने @ ज़ोरैंक के पहले सुझाव का पालन किया ताकि मैं क्रोम के कंसोल में सख्त मोड देख सकूं। '(फ़ंक्शन एफ() { 'सख्त उपयोग करें'; console.log ('" यह "यहां है:', यह, 'सख्त मोड अच्छा है ...'); }());' ' (फ़ंक्शन f() { console.log ('"यह" यहां है:', यह, 'वैश्विक चर बुराई हैं! तो क्रॉकफ़ोर्ड ने मुझे बताया ...'); }()); ' – slacktracer

उत्तर

12

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

2

यदि आप कंसोल में केवल एक ही फ़ंक्शन का परीक्षण कर रहे हैं, तो आप फ़ंक्शन घोषणा में पहली पंक्ति के रूप में 'सख्त उपयोग' भी डाल सकते हैं।

2

उपयोग shift + इनपुट करने के लिए प्रवेश 'का उपयोग सख्त'

इस enter image description here

+1

यह काम करता है। बस 'सख्त उपयोग' जोड़ने के लिए सुनिश्चित करने की आवश्यकता है; एफ 12 क्रोम कंसोल में प्रत्येक बातचीत में। –

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