जावास्क्रिप्ट सख्त मोड

"use strict"; जावास्क्रिप्ट को "सख्त मोड" में चलाने के लिए निर्देशित करता है।

"use strict" निर्देश

"use strict" जावास्क्रिप्ट 1.8.5 में नई निर्देश (एससीएमएस संस्करण 5) है।

यह एक व्याकरण नहीं है, बल्कि एक लिखावज एक्सप्रेशन है, जो पहले के संस्करण के जावास्क्रिप्ट इसे नज़र अवरुद्ध करेगा।

"use strict"; के काम करना है जो जावास्क्रिप्ट कोड को "सख्त मोड" में चलाने के लिए निर्देश करता है।

सख्त मोड में, आप उदाहरण के लिए, घोषित नहीं किए वाले वेरियेबल का उपयोग नहीं कर सकते।

निम्नलिखित संस्करण के ब्राउज़र सख्त मोड को समर्थित करते हैं:

  • वेर्सन 10 के बाद के IE
  • वेर्सन 4 के बाद के Firefox
  • वेर्सन 13 के बाद के Chrome
  • वेर्सन 5.1 के बाद के Safari
  • वेर्सन 12 के बाद के Opera

सख्त मोड को घोषित करना

स्क्रिप्ट या फ़ंक्शन के शुरू में जोड़कर "use strict"; सख्त मोड को घोषित करने के लिए

सख्त मोड को स्क्रिप्ट के शुरू में घोषित करना, जो वैश्विक क्षेत्रफल (स्क्रिप्ट के सभी कोड सख्त मोड में चलेगा):

उदाहरण

"use strict";
x = 3.14;       // यह त्रुटि पैदा करेगा क्योंकि x अभी घोषित नहीं हुआ है

अपने आप प्रयास करें

उदाहरण

"use strict";
myFunction();
function myFunction() {
     y = 3.14;   // यह त्रुटि पैदा करेगा क्योंकि y अभी घोषित नहीं हुआ है
}

अपने आप प्रयास करें

सख्त मोड को फ़ंक्शन में घोषित करना, जो स्थानीय क्षेत्रफल (केवल फ़ंक्शन के भीतर का कोड सख्त मोड में चलेगा):

x = 3.14;       // यह त्रुटि पैदा नहीं करेगा
myFunction();
function  myFunction() {
	"use strict";
	 y = 3.14;   // यह त्रुटि पैदा करेगा
}

अपने आप प्रयास करें

"use strict"; व्याकरण

सख्त मोड के व्याकरण को पहले की संस्करण के साथ सहयोगी तौर पर डिजाइन किया गया है।

जावास्क्रिप्ट के प्रोग्राम में नंबरिक लिखावज (जैसे 4+5) या स्ट्रिंग लिखावज ("Bill Gates") ने नकारात्मक प्रभाव नहीं होगा। यह केवल अस्तित्व नहीं वाले वेरियेबल के रूप में कम्पाइल होगा और फिर गायब हो जाएगा।

सभी "use strict"; सिर्फ उन्हें प्रभावित करता है जो इसके अर्थ को "समझते हैं"

क्यों सख्त मोड का उपयोग करें?

सख्त मोड हमें "सुरक्षित" JavaScript लिखने में आसानी प्रदान करता है。

सख्त मोड में पहले अनुमति दिए गए "बुरे वाक्यबद्ध" को वास्तविक त्रुटि में बदल दिया गया है。

उदाहरण के लिए, सामान्य JavaScript में, वारियेबल का गलत नाम लिखने से नई ग्लोबल वारियेबल बन जाती है। सख्त मोड में, इससे त्रुटि फेंकी जाएगी और ग्लोबल वारियेबल अनावश्यक रूप से बनने की संभावना नहीं है。

सामान्य JavaScript में, अनदेखी गई गुण को लिखने पर, डेवलपर को कोई त्रुटि रिपोर्ट नहीं मिलेगी。

सख्त मोड में, अनदेखी गई गुण को लिखने, या अस्तित्व नहीं वाले वारियेबल या ऑब्जैक्ट को लिखने पर त्रुटि फेंकी जाएगी。

सख्त मोड में अनुमति न दिए गए चीजें

वारियेबल को घोषित न करके उसके उपयोग को अनुमति नहीं है:

"use strict";
x = 3.14;                // यह त्रुटि पैदा करेगा

अपने आप प्रयास करें

ऑब्जैक्ट भी वारियेबल है

ऑब्जैक्ट को न घोषित करके उसके उपयोग को अनुमति नहीं है:

"use strict";
x = {p1:10, p2:20};      // यह त्रुटि पैदा करेगा

अपने आप प्रयास करें

वारियेबल (या ऑब्जैक्ट) को मिटाना अनुमति नहीं है:

"use strict";
var x = 3.14;
delete x;                // यह त्रुटि पैदा करेगा

अपने आप प्रयास करें

फ़ंक्शन को मिटाना अनुमति नहीं है:

"use strict";
function x(p1, p2) {}; 
delete x;                 // यह त्रुटि पैदा करेगा

अपने आप प्रयास करें

दोहरे पारामीटर नाम को लिखना अनुमति नहीं है:

"use strict";
function x(p1, p1) {};   // यह त्रुटि पैदा करेगा

अपने आप प्रयास करें

अष्टांकिक संख्या लिखाई को लिखना अनुमति नहीं है:

"use strict";
var x = 010;             // यह त्रुटि पैदा करेगा

अपने आप प्रयास करें

इस्केप चारक्टर को लिखना अनुमति नहीं है:

"use strict";
var x = \010;            // यह त्रुटि पैदा करेगा

अपने आप प्रयास करें

केवल पढ़ने वाले गुण को लिखने की अनुमति नहीं है:

"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14;            // यह त्रुटि पैदा करेगा

अपने आप प्रयास करें

केवल पढ़ने वाले गुण को लिखने की अनुमति नहीं है:

"use strict";
var obj = {get x() {return 0} };
obj.x = 3.14;            // यह त्रुटि पैदा करेगा

अपने आप प्रयास करें

अनदेखी गई गुण को मिटाना अनुमति नहीं है:

"use strict";
delete Object.prototype; // यह त्रुटि पैदा करेगा

अपने आप प्रयास करें

शब्द "eval" को वारियेबल के रूप में नहीं इस्तेमाल किया जा सकता है:

"use strict";
var eval = 3.14;         // यह त्रुटि पैदा करेगा

अपने आप प्रयास करें

शब्द "arguments" को वारियेबल के रूप में नहीं इस्तेमाल किया जा सकता है:

"use strict";
var arguments = 3.14;    // 这将引发错误

अपने आप प्रयास करें

with 语句是不允许的:

"use strict";
with (Math){x = cos(2)}; // 这将引发错误

अपने आप प्रयास करें

处于安全考虑,不允许 eval() 在其被调用的作用域中创建变量:

"use strict";
eval ("var x = 2");
alert (x);               // यह त्रुटि फेंकेगी

अपने आप प्रयास करें

फ़ंक्शन f() के समान के फ़ंक्शन बुलाए जाने में this का मूल्य ग्लोबल ऑब्जेक्ट है।सख्त मोड में अब यह undefined

भविष्य के लिए सुरक्षा

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

  • implements
  • interface
  • let
  • package
  • private
  • protected
  • public
  • static
  • yield
"use strict";
var public = 1500;      // यह त्रुटि फेंकेगी

अपने आप प्रयास करें

चेतावनी

"use strict" डिरेक्टिव केवल स्क्रिप्ट या फ़ंक्शन केशुरूआतपहचाना गया है。