Ø¨Ø±Ø§Û Ù Ø¯ØªÛ Ø·ÙÙØ§ÙÛ Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت بدÙÙ Ù Ø´Ú©Ù Ø³Ø§Ø²Ú¯Ø§Ø±Û ØªÙØ³Ø¹Ù داد٠٠ÛâØ´Ø¯ Ù Ø§Ù Ú©Ø§ÙØ§Øª Ø¬Ø¯ÛØ¯ بدÙ٠اÛÙÚ©Ù ÙÛØ§Ø²Û ب٠تغÛÛØ± در Ø§Ù Ú©Ø§ÙØ§Øª ÙØ¨ÙÛ Ø¨Ø§Ø´Ø¯Ø Ø¨Ù Ø§Û٠زبا٠اضاÙÙ Ù ÛâØ´Ø¯.
Ù Ø²ÛØª اÛÙ Ù ÙØ¶Ùع در اÛÙ Ø¨ÙØ¯ Ú©Ù ÙÛÚگا٠در Ú©Ø¯ÙØ§Û ÙØ¯ÛÙ Û Ø§Ø´Ú©Ø§ÙÛ Ø¨ÙØ¬Ùد ÙÙ ÛâØ¢Ù Ø¯. ا٠ا ٠شک٠اÛÙØ¬Ø§ Ø¨ÙØ¯ ک٠اگر اشکاÙÛ Ø¯Ø± طراØÛ Ø²Ø¨Ø§ÙØ ØªÙØ³Ø· خاÙÙØ§Ù Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت رخ Ø¯Ø§Ø¯Ù Ø¨ÙØ¯Ø تا ابد بجا Ù ÛâÙ Ø§ÙØ¯.
اÛÙ Ù ÙØ¶Ùع تا سا٠2009 Ú©Ù ECMAScript 5 (ES5) ٠عرÙÛ Ø´Ø¯Ø Ø§Ø¯Ø§Ù Ù Ø¯Ø§Ø´Øª.ES5 ÙØ§Ø¨ÙÛØªâÙØ§Û Ø¬Ø¯ÛØ¯Û را Ø¨Ù Ø²Ø¨Ø§Ù Ø§ÙØ²Ùد Ù Ø§ØµÙØ§ØØ§ØªÛ را ÙÛØ² بر رÙÛ Ø§Ù Ú©Ø§ÙØ§Øª ÙØ¹ÙÛ Ø§ÙØ¬Ø§Ù داد.
ب٠Ù
ÙØ¸Ùر اÛÙÚ©Ù Ú©Ø¯ÙØ§Û ÙØ¯ÛÙ
Û Ú©Ø§Ø± Ú©ÙÙØ¯Ø Ø¨ÛØ´ØªØ± تغÛÛØ±Ø§ØªÛ ک٠در ES5 Ø§ØªÙØ§Ù Ø§ÙØªØ§Ø¯Ø Ø¨Ù ØµÙØ±Øª Ù¾ÛØ´âÙØ±Ø¶ ØºÛØ± ÙØ¹Ø§Ù Ø§Ø³ØªØ Ù Ø¨Ø±Ø§Û ÙØ¹Ø§ÙâØ³Ø§Ø²Û Ø¢ÙâÙØ§ Ø¨Ø§ÛØ¯ از طرÛ٠عبارت "use strict" ÚÙÛÙ Ú©Ø§Ø±Û Ø±Ø§ Ø§ÙØ¬Ø§Ù
داد.
âuse strictâ
Ø¹Ø¨Ø§Ø±ØªÙ Ø¯Ø³ØªÙØ±ÛÙ (directive) "use strict" ÛØ§ 'use strict' شبÛ٠ب٠ÛÚ© رشت٠است ٠زÙ
اÙÛ Ú©Ù Ø¯Ø± Ø§Ø¨ØªØ¯Ø§Û Ø§Ø³Ú©Ø±Ûپت ÙØ±Ø§Ø± Ù
ÛâÚ¯ÛØ±Ø¯Ø تÙ
اÙ
اسکرÛپت در ØØ§Ùت Ù
در٠کار Ø®ÙØ§Ùد کرد.
Ø¨Ø±Ø§Û ÙÙ ÙÙÙ :
"use strict";
// اÛ٠کد از Ø±ÙØ´ Ù
در٠کار Ù
ÛâÚ©ÙØ¯
...
در Ù
ÙØ±Ø¯ تابعâÙØ§ (Ø±ÙØ´Û Ø¨Ø±Ø§Û Ú¯Ø±ÙÙâØ¨ÙØ¯Û Ø¯Ø³ØªÙØ±Ø§ØªØ functions) در Ø¢ÛÙØ¯Ù Ø®ÙØ§ÙÛÙ
Ø¢Ù
ÙØ®Øª. در اÛÙØ¬Ø§ ØµØ±ÙØ§ بداÙÛØ¯ Ú©Ù Ù
ÛâØªÙØ§ÙÛÙ
در Ø§Ø¨ØªØ¯Ø§Û Ø§Ú©Ø«Ø± تابعâÙØ§ "use strict" ÙØ±Ø§Ø± دÙÛÙ
تا ÙÙØ§Ø¹Ø¯ Ù
Ø¯Ø±Ù ØµØ±ÙØ§ بر رÙÛ Ú©Ø¯ÙØ§Û داخ٠تابع اعÙ
ا٠شÙÙØ¯. اÙ
ا Ù
عÙ
ÙÙØ§ Ø¨Ø±Ø§Û ØªÙ
اÙ
اسکرÛپت Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâØ´ÙØ¯.
اÛ٠عبارت ØØªÙ ا Ø¨Ø§ÛØ¯ در Ø§Ø¨ØªØ¯Ø§Û Ø§Ø³Ú©Ø±Ûپت ش٠ا Ø¨Ø§Ø´Ø¯Ø Ø¯Ø± ØºÛØ± اÛÙ ØµÙØ±Øª ØØ§Ùت Ù Ø¯Ø±Ù ÙØ¹Ø§Ù ÙØ®ÙØ§ÙØ¯ شد. Strict mode در اÛÙØ¬Ø§ ÙØ¹Ø§Ù ÙÛØ³Øª :
alert("کد");
// ÙØ§Ø¯ÛØ¯Ù Ú¯Ø±ÙØªÙ Ù
ÛâØ´ÙØ¯. Ø¨Ø§ÛØ¯ در ابتدا باشد "use strict"
"use strict";
// ÙØ¹Ø§Ù ÙØ´Ø¯Ù است strict mode
ÙÙØ· کاÙ
ÙØªâÙØ§ Ù
ÛâØªÙØ§ÙÙØ¯ در Ø¨Ø§ÙØ§Û "use strict" ÙØ±Ø§Ø± Ú¯ÛØ±Ùدâ¦
use strict ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯ÙÛÚ Ø¯Ø³ØªÙØ±Û Ù
اÙÙØ¯ no use strict ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯ تا ب٠Ù
ÙØªÙر Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت Ø¯Ø³ØªÙØ± Ø¯ÙØ¯ Ø¨Ù Ø±ÙØ´ ÙØ¯ÛÙ
Û Ú©Ø§Ø± Ú©ÙØ¯.
زÙ
اÙÛâÚ©Ù use strict را ÙØ±Ø§Ø± Ù
ÛâØ¯ÙÛÙ
Ø Ø±Ø§Ù Ø¨Ø±Ú¯Ø´ØªÛ ÙØ¬Ùد ÙØ¯Ø§Ø±Ø¯.
Ú©ÙØ³ÙÙ (console) Ù Ø±ÙØ±Ú¯Ø±
در اداÙ
٠کار زÙ
اÙÛ Ú©Ù Ø§Ø² Ú©ÙØ³ÙÙ Ù
Ø±ÙØ±Ú¯Ø± Ø®ÙØ¯ Ø¨Ø±Ø§Û Ø§Ø¬Ø±Ø§Û Ú©Ø¯ÙØ§ Ø§Ø³ØªÙØ§Ø¯Ù Ù
ÛâÚ©ÙÛØ¯ در ÙØ¸Ø± Ø¯Ø§Ø´ØªÙ Ø¨Ø§Ø´ÛØ¯ ک٠اÛÙ Ú©ÙØ³ÙÙ Ø¨Ù Ø·ÙØ± Ù¾ÛØ´ ÙØ±Ø¶ از use strict Ø§Ø³ØªÙØ§Ø¯Ù ÙÙ
ÛâÚ©ÙØ¯.
گاÙÛ Ø§ÙÙØ§Øª زÙ
اÙÛ Ú©Ù ÙØ¬Ùد use strict ØªÙØ§ÙØªÛ Ø§ÛØ¬Ø§Ø¯ Ù
ÛâÚ©ÙØ¯Ø Ø§Ø³ØªÙØ§Ø¯Ù از Ú©ÙØ³ÙÙ Ù
Ø±ÙØ±Ú¯Ø± ÙØªØ§Ûج اشتباÙÛ Ø¨Ù Ø´Ù
ا Ø®ÙØ§Ùد داد.
ØØªÛ اگر از Shift+Enter Ø¨Ø±Ø§Û ÙØ§Ø±Ø¯ کرد٠عبارت use strict Ø§Ø³ØªÙØ§Ø¯Ù ÙÙ
اÛÛØ¯Ø ÙØªÛØ¬Ù ÙØ®ÙØ§ÙØ¯ داد.
را٠ØÙ ÙØ§Ø¨Ù اتکا Ø¨Ø±Ø§Û Ø§ÛÙ Ù
ÙØ¶Ùع آ٠است ک٠ب٠اÛ٠شک٠عبارت use strict را ÙØ§Ø±Ø¯ ÙÙ
اÛÛØ¯ :
(function() {
'use strict';
// ... کد Ø´Ù
ا ...
})()
Ø¢ÛØ§ Ø¨Ø§ÛØ¯ از âuse strictâ Ø§Ø³ØªÙاد٠کÙÛÙ Ø
اÛÙ Ø³ÙØ§Ù ٠٠ک٠است Ø³Ø§Ø¯Ù Ø¨ÙØ¸Ø± برسد ا٠ا اÛÙØ·Ùر ÙÛØ³Øª.
Ø´Ø§ÛØ¯ Ú©Ø³Û Ù¾ÛØ´ÙÙØ§Ø¯ Ø¯ÙØ¯ ک٠اسکرÛپتâÙØ§ را ÙÙ
را٠با "use strict" Ø´Ø±ÙØ¹ Ú©ÙÛØ¯â¦ اÙ
ا Ù
ÛâØ¯Ø§ÙÛØ¯ ÚÙ ÚÛØ²Û Ø¬Ø§ÙØ¨ استØ
Ø¬Ø§ÙØ§Ø§Ø³Ú©Ø±Ûپت Ù
در٠از Â«Ú©ÙØ§Ø³âÙØ§Â» ٠«Ù
اÚÙÙâÙØ§Â» â Ø³Ø§Ø®ØªØ§Ø±ÙØ§Û Ù¾ÛØ´Ø±Ùت٠زبا٠(Ù
ا ÙØ·Ø¹Ø§ ب٠آÙâÙØ§ Ø®ÙØ§ÙÛÙ
Ø±Ø³ÛØ¯) â Ù¾Ø´ØªÛØ¨Ø§ÙÛ Ù
ÛâÚ©ÙØ¯ Ú©Ù Ø¨Ù Ø·ÙØ± Ø®ÙØ¯Ú©Ø§Ø± use strict را ÙØ¹Ø§Ù Ù
ÛâÚ©ÙÙØ¯. پس Ù
ا ÙÛØ§Ø²Û ÙÛØ³Øª Ú©Ù Ø¯Ø³ØªÙØ± "use strict" را در ØµÙØ±Øª Ø§Ø³ØªÙØ§Ø¯Ù از Ø¢ÙâÙØ§ اضاÙÙ Ú©ÙÛÙ
.
پس اکÙÙÙ "use strict" ÛÚ© Ù
ÙÙ
ا٠در Ø§Ø¨ØªØ¯Ø§Û Ø§Ø³Ú©Ø±Ûپت Ø´Ù
ا است. Ø¨Ø¹Ø¯Ø§Ø Ø²Ù
اÙÛ Ú©Ù Ú©Ø¯ Ø´Ù
ا تÙ
اÙ
ا شاÙ
Ù Ú©ÙØ§Ø³âÙØ§ Ù Ù
اÚÙÙâÙØ§ Ù
ÛâØ´ÙØ¯Ø Ù
ÛâØªÙØ§ÙÛØ¯ آ٠را ØØ°Ù Ú©ÙÛØ¯.
از ÙÙ
اکÙÙÙØ Ù
ا Ø¨Ø§ÛØ¯ Ø¨Ù Ø·ÙØ± Ú©ÙÛ Ø¯Ø±Ø¨Ø§Ø±Ù use strict بداÙÛÙ
.
در ÙØµÙâÙØ§Û Ø¨Ø¹Ø¯ÛØ ÙÙ Ø§ÙØ·Ùر Ú©Ù Ø®ØµÙØµÛتâÙØ§Û زبا٠را ÛØ§Ø¯ Ù ÛâÚ¯ÛØ±ÛÙ Ø ØªÙØ§Ùت بÛÙ ØØ§ÙتâÙØ§Û strict Ù ÙØ¯ÛÙ Û Ø±Ø§ Ø®ÙØ§ÙÛÙ Ø¯ÛØ¯. Ø®ÙØ´Ø¨Ø®ØªØ§Ù٠تعداد Ø¢ÙâÙØ§ Ø²ÛØ§Ø¯ ÙÛØ³Øª ٠در ÙØ§Ùع Ø¢ÙâÙØ§ Ø²ÙØ¯Ú¯Û ٠ا را Ø¨ÙØªØ± Ù ÛâÚ©ÙÙØ¯.
ت٠ا٠٠ثاÙâÙØ§ درÙ٠اÛÙ Ø¢Ù ÙØ²Ø´ strict mode را تا ز٠اÙÛ Ú©Ù Ø®ÙØ§Ù آ٠باشد (Ú©Ù Ø§ØªÙØ§Ù Ù ÛâØ§ÙØªØ¯) در ÙØ¸Ø± Ù ÛâÚ¯ÛØ±Ùد.
ÙØ¸Ø±Ø§Øª
<code>Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯Ø Ø¨Ø±Ø§Û ÚÙØ¯Û٠خط â کد را درÙ٠تگ<pre>ÙØ±Ø§Ø± دÙÛØ¯Ø Ø¨Ø±Ø§Û Ø¨ÛØ´ از د٠خط کد â Ø§Ø² ÛÚ© جعبÙÙ Ø´ÙÛ Ø§Ø³ØªÙØ§Ø¯Ù Ú©ÙÛØ¯. (plnkrØ jsbinØ codepenâ¦)