జావాస్క్రిప్ట్ స్ట్రింగెంట్ మోడ్

"use strict"; జావాస్క్రిప్ట్ కోడ్‌ను "స్ట్రింగెంట్ మోడ్" లో అమలు చేయాలని ప్రకటిస్తుంది.

"use strict" ఆదేశం

"use strict" జావాస్క్రిప్ట్ 1.8.5 లో కొత్త సింఫిన్క్ (ఇసోమార్క్స్క్రిప్ట్ వెర్షన్ 5) లో కొత్త ఆదేశం.

ఇది ఒక వాక్యం అని కాదు, ఒక టెక్స్ట్ ఎక్స్ప్రెషన్ ఉంటుంది, ముందస్తు వెర్షన్ల జావాస్క్రిప్ట్ దానిని విస్మరిస్తుంది.

"use strict"; అంటే జావాస్క్రిప్ట్ కోడ్‌ను "స్ట్రింగెంట్ మోడ్" లో అమలు చేయాలని సూచిస్తుంది.

స్ట్రింగెంట్ మోడ్‌లో, ఉదాహరణకు, ప్రకటించబడని వేరియబుల్స్ ను ఉపయోగించలేరు.

క్రింది వెర్షన్ల బ్రౌజర్లు స్ట్రింగెంట్ మోడ్‌ను మద్దతు అందిస్తాయి:

  • ఐఈ నుండి వెర్షన్ 10 తర్వాత
  • ఫైర్‌ఫాక్స్ నుండి వెర్షన్ 4 తర్వాత
  • చ్రోమ్ నుండి వెర్షన్ 13 తర్వాత
  • సఫారీ నుండి వెర్షన్ 5.1 తర్వాత
  • ఆపరా నుండి వెర్షన్ 12 తర్వాత

స్ట్రింగెంట్ మోడ్ ప్రకటించడం

స్క్రిప్ట్ లేదా ఫంక్షన్ ప్రారంభంలో జోడించడం ద్వారా "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" 指令只能在脚本或函数的开头被识别。