JavaScript Use Strict

জাভাস্ক্রিপ্টের কঠোর পদ্ধতি সম্পর্কে জানুন

JavaScript Use Strict

The "use strict" Directive

ECMAScript সংস্করণ 5-এ "কঠোর ব্যবহার করুন" নির্দেশিকাটি নতুন ছিল।

এটি জাভাস্ক্রিপ্ট কোডকে "কঠোর মোডে" কার্যকর করার জন্য সংজ্ঞায়িত করে।

এটি একটি বিবৃতি নয়. এটি একটি আক্ষরিক অভিব্যক্তি, যা জাভাস্ক্রিপ্টের পূর্ববর্তী সংস্করণ দ্বারা উপেক্ষা করা হয়।

"কঠোর ব্যবহার করুন" এর উদ্দেশ্য হল কোডটি "কঠোর মোডে" কার্যকর করা উচিত তা উল্লেখ করা।

একটি কঠোর পদ্ধতির সাথে, উদাহরণস্বরূপ, অঘোষিত ভেরিয়েবল ব্যবহার করা যাবে না।

Declaring Strict Mode

একটি স্ক্রিপ্ট বা ফাংশনের শুরুতে "কঠোর ব্যবহার করুন"; যোগ করে একটি কঠোর পদ্ধতি ঘোষণা করা হয়

যদি একটি স্ক্রিপ্টের শুরুতে ঘোষণা করা হয়, তবে এটির বিশ্বব্যাপী সুযোগ রয়েছে (স্ক্রিপ্টের সমস্ত কোড কঠোরভাবে কার্যকর করা হয়):

উদাহরণ

"কঠোরভাবে ব্যবহার করুন"; x = 3.14; // এটি একটি ত্রুটি নিক্ষেপ করবে কারণ x ঘোষণা করা হয়নি

উদাহরণ

"কঠোরভাবে ব্যবহার করুন"; myFunction(); ফাংশন myFunction() { y = 3.14; // এটি একটি ত্রুটি নিক্ষেপ করবে কারণ y ঘোষণা করা হয়নি }

যদি একটি ফাংশনের ভিতরে ঘোষণা করা হয় তবে এটির স্থানীয় সুযোগ রয়েছে (শুধুমাত্র ফাংশনের ভিতরের কোডটি কঠোর পরিসরে রয়েছে):

x = 3.14; // এটি একটি ত্রুটি সৃষ্টি করবে না। myFunction(); ফাংশন myFunction() { "কঠোরভাবে ব্যবহার করুন"; y = 3.14; // এটি একটি ত্রুটি নিক্ষেপ করবে }

The "use strict"; Syntax

কঠোর পদ্ধতি ঘোষণার জন্য সিনট্যাক্সটি জাভাস্ক্রিপ্টের পুরানো সংস্করণগুলির সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য ডিজাইন করা হয়েছিল।

একটি জাভাস্ক্রিপ্ট প্রোগ্রামে একটি সংখ্যাসূচক আক্ষরিক (4 + 5;) বা একটি স্ট্রিং আক্ষরিক ("জন ডো";) কম্পাইল করার কোন পার্শ্ব প্রতিক্রিয়া নেই। এটি কেবল একটি ভেরিয়েবলের সাথে কম্পাইল করা শেষ হয় যা বিদ্যমান নেই।

তাই "কঠোর ব্যবহার করুন"; শুধুমাত্র নতুন কম্পাইলারদের জন্য গুরুত্বপূর্ণ যারা এর অর্থ "বুঝে"।

Why Strict Mode?

কঠোর পদ্ধতিটি "নিরাপদ" জাভাস্ক্রিপ্ট লেখা সহজ করে তোলে।

কঠোর পদ্ধতিটি পূর্বে গৃহীত "খারাপ সিনট্যাক্স" কে বাস্তব ত্রুটিতে পরিণত করে।

উদাহরণস্বরূপ, সাধারণ জাভাস্ক্রিপ্টে, একটি ভেরিয়েবলের নাম ভুল টাইপ করা একটি নতুন গ্লোবাল ভেরিয়েবল তৈরি করে। চরম ক্ষেত্রে, এটি একটি ত্রুটি নিক্ষেপ করবে, ঘটনাক্রমে এটি একটি বিশ্ব পরিবর্তনশীল তৈরি করা অসম্ভব করে তুলবে।

সাধারণ জাভাস্ক্রিপ্টে, একজন বিকাশকারী অ-লিখনযোগ্য বৈশিষ্ট্যগুলিতে মান নির্ধারণের জন্য কোনও ত্রুটির মন্তব্য পাবেন না।

কঠোর মোডে, একটি অ-লেখাযোগ্য বৈশিষ্ট্য, গেটার-অনলি অ্যাট্রিবিউট, অস্তিত্বহীন বৈশিষ্ট্য, অস্তিত্বহীন পরিবর্তনশীল, বা অস্তিত্বহীন বস্তুর যে কোনো অ্যাসাইনমেন্ট একটি ত্রুটি নিক্ষেপ করবে।

Not Allowed in Strict Mode

এটি ঘোষণা না করে একটি পরিবর্তনশীল ব্যবহার করা অনুমোদিত নয়:

"কঠোরভাবে ব্যবহার করুন"; x = 3.14; // এটি একটি ত্রুটি নিক্ষেপ করবে

বস্তুগুলি পরিবর্তনশীল।

নোটিশ ছাড়া একটি আইটেম ব্যবহার অনুমোদিত নয়:

"কঠোরভাবে ব্যবহার করুন"; x = {p1:10, p2:20}; // এটি একটি ত্রুটি নিক্ষেপ করবে

একটি পরিবর্তনশীল (বা বস্তু) মুছে ফেলার অনুমতি নেই।

"কঠোরভাবে ব্যবহার করুন"; যাক x = 3.14; x মুছে ফেলুন; // এটি একটি ত্রুটি নিক্ষেপ করবে

একটি কার্যকলাপ মুছে ফেলার অনুমতি দেওয়া হয় না.

"কঠোরভাবে ব্যবহার করুন"; ফাংশন x(p1, p2) {}; x মুছে ফেলুন; // এটি একটি ত্রুটি নিক্ষেপ করবে

একটি প্যারামিটার নামের ডুপ্লিকেশন অনুমোদিত নয়:

"কঠোরভাবে ব্যবহার করুন"; ফাংশন x(p1, p1) {}; // এটি একটি ত্রুটি নিক্ষেপ করবে

অক্টাল সংখ্যাসূচক আক্ষরিক অনুমোদিত নয়:

"কঠোরভাবে ব্যবহার করুন"; let x = 010; // এটি একটি ত্রুটি নিক্ষেপ করবে

অক্টাল এস্কেপ অক্ষর অনুমোদিত নয়:

"কঠোরভাবে ব্যবহার করুন"; let x = "\010"; // এটি একটি ত্রুটি নিক্ষেপ করবে

শুধুমাত্র পঠনযোগ্য বৈশিষ্ট্যে লেখার অনুমতি নেই:

"কঠোরভাবে ব্যবহার করুন"; const obj = {}; Object.defineProperty(obj, "x", {value:0, writable:false}); obj.x = 3.14; // এটি একটি ত্রুটি নিক্ষেপ করবে

শুধুমাত্র-প্রাপ্ত বৈশিষ্ট্যে লেখার অনুমতি নেই:

"কঠোরভাবে ব্যবহার করুন"; const obj = { x() { ফেরত 0 } }; obj.x = 3.14; // এটি একটি ত্রুটি নিক্ষেপ করবে

একটি অপসারণযোগ্য বৈশিষ্ট্য মুছে ফেলা অনুমোদিত নয়:

"কঠোরভাবে ব্যবহার করুন"; Object.prototype মুছে ফেলুন; // এটি একটি ত্রুটি নিক্ষেপ করবে

eval শব্দটি একটি পরিবর্তনশীল হিসাবে ব্যবহার করা যাবে না:

"কঠোরভাবে ব্যবহার করুন"; let eval = 3.14; // এটি একটি ত্রুটি নিক্ষেপ করবে

শব্দ আর্গুমেন্ট একটি পরিবর্তনশীল হিসাবে ব্যবহার করা যাবে না:

"কঠোরভাবে ব্যবহার করুন"; যাক যুক্তি = 3.14; // এটি একটি ত্রুটি নিক্ষেপ করবে

বিবৃতি সহ অনুমোদিত নয়:

"কঠোরভাবে ব্যবহার করুন"; সঙ্গে (গণিত){x = cos(2)}; // এটি একটি ত্রুটি নিক্ষেপ করবে

নিরাপত্তার কারণে, eval() কে যে সুযোগে এটি বলা হয় সেখানে ভেরিয়েবল তৈরি করার অনুমতি নেই।

কঠোরভাবে বলতে গেলে, একটি ভেরিয়েবল ঘোষণা করার আগে ব্যবহার করা যাবে না:

"কঠোরভাবে ব্যবহার করুন"; eval("x = 2"); সতর্কতা (x); // এটি একটি ত্রুটি নিক্ষেপ করবে

কঠোরভাবে বলতে গেলে, eval() var কীওয়ার্ড ব্যবহার করে একটি পরিবর্তনশীল ঘোষণা করতে পারে না:

"কঠোরভাবে ব্যবহার করুন"; eval("var x = 2"); সতর্কতা (x); // এটি একটি ত্রুটি নিক্ষেপ করবে

eval() let কীওয়ার্ড ব্যবহার করে একটি ভেরিয়েবল ঘোষণা করতে পারে না:

eval("লেট x = 2"); সতর্কতা (x); // এটি একটি ত্রুটি নিক্ষেপ করবে

এই শব্দটি কঠোর মোডে ফাংশনে ভিন্নভাবে আচরণ করে।

এই শব্দটি সেই বস্তুকে বোঝায় যা ফাংশনকে বলে।

বস্তু নির্দিষ্ট না হলে, কঠোর মোডে ফাংশনগুলি অনির্ধারিত ফেরত দেয় এবং সাধারণ মোডে ফাংশনগুলি বিশ্বব্যাপী অবজেক্ট (উইন্ডো) প্রদান করে:

"কঠোরভাবে ব্যবহার করুন"; ফাংশন myFunction() { সতর্কতা (এটি); // সতর্ক করবে "অনির্ধারিত"। } myFunction();

Future Proof!

ভবিষ্যতের জাভাস্ক্রিপ্ট সংস্করণগুলির জন্য সংরক্ষিত শব্দগুলি পরিবর্তনশীল নাম হিসাবে কঠোরভাবে ব্যবহার করা যাবে না।

এগুলো হলঃ

"কঠোরভাবে ব্যবহার করুন"; let public = 1500; // এটি একটি ত্রুটি নিক্ষেপ করবে

Watch Out!

"কঠোর ব্যবহার করুন" নির্দেশটি শুধুমাত্র একটি স্ক্রিপ্ট বা ফাংশনের শুরুতে স্বীকৃত হয়।

Exercise

কীভাবে নির্দিষ্ট করবেন যে জাভাস্ক্রিপ্ট কোডটি 'কঠোর মোডে' কার্যকর করা উচিত?

কি একটি কঠোর পদ্ধতি সংজ্ঞায়িত করে?

"use strict";
✓ ঠিক আছে! "কঠোরভাবে ব্যবহার করুন"; একটি কঠোর পদ্ধতি কার্যকর করার জন্য সঠিক সিনট্যাক্স।
use strict;
✗ ভুল! উদ্ধৃতি চিহ্ন ছাড়া "কঠোর ব্যবহার করুন"; কাজ করে না।
"strict mode";
✗ ভুল! "কঠোর মোড"; সঠিক সিনট্যাক্স নয়, "কঠোর ব্যবহার করুন"; শুধুমাত্র সঠিক.
strict mode;
✗ ভুল! উদ্ধৃতি চিহ্ন ছাড়া কঠোর মোড; কাজ করে না।