ব্যাপ্তি
Orতিহাসিকভাবে, জাভাস্ক্রিপ্ট কীভাবে ফাংশনগুলি বাদ দেওয়া যায় তা সম্পর্কে বিভ্রান্ত হয়ে পড়েছে। কখনও কখনও এগুলি স্থিতিশীলভাবে স্কোপযুক্ত বলে মনে হয় তবে কিছু বৈশিষ্ট্যগুলি এগুলি এমনভাবে আচরণ করে যা তারা গতিশীলভাবে বাদ যায়। এটি বিভ্রান্তিকর, প্রোগ্রামগুলি পড়া এবং বুঝতে অসুবিধে করছে। ভুল বোঝাবুঝি বাগের কারণ হয়। এটি পারফরম্যান্সের জন্যও সমস্যা। স্থির স্কোপিংটি সংকলনের সময় পরিবর্তনশীল বাঁধাইয়ের অনুমতি দেয়, তবে গতিশীল সুযোগের প্রয়োজনের অর্থ বাইন্ডিং অবশ্যই রানটাইমকে মুলতবি করা উচিত, যা উল্লেখযোগ্য পারফরম্যান্সের শাস্তি নিয়ে আসে।
কড়া মোডের জন্য সমস্ত পরিবর্তনশীল বাঁধাই স্থিরভাবে করা দরকার। এর অর্থ হ'ল যে বৈশিষ্ট্যগুলির জন্য আগে গতিশীল বাঁধাই করা দরকার সেগুলি অবশ্যই মুছে ফেলা বা সংশোধন করা উচিত। বিশেষত, উইথ স্টেটমেন্টটি মুছে ফেলা হয়, এবং এর কলারের পরিবেশের সাথে छेলা করার ইওল ফাংশনের ক্ষমতা মারাত্মকভাবে সীমাবদ্ধ।
কঠোর কোডের একটি সুবিধা হ'ল ওয়াইউআই কমপ্রেসারের মতো সরঞ্জামগুলি
প্রক্রিয়া করার সময় আরও ভাল কাজ করতে পারে।
ইম্প্লিড গ্লোবাল ভেরিয়েবল
জাভাস্ক্রিপ্ট গ্লোবাল ভেরিয়েবল অন্তর্ভুক্ত করেছে। আপনি যদি সুস্পষ্টভাবে কোনও ভেরিয়েবল ঘোষণা না করেন তবে গ্লোবাল ভেরিয়েবল আপনার জন্য স্পষ্টভাবে ঘোষণা করা হয়। এটি প্রোগ্রামিংকে নতুনদের জন্য আরও সহজ করে তোলে কারণ তারা তাদের কিছু বেসিক গৃহকর্মকে অবহেলা করতে পারে। তবে এটি বৃহত্তর প্রোগ্রামগুলির পরিচালনা আরও অনেক কঠিন করে তোলে এবং এটি নির্ভরযোগ্যতার উল্লেখযোগ্যভাবে হ্রাস করে। সুতরাং কঠোর মোডে, অন্তর্নিহিত গ্লোবাল ভেরিয়েবলগুলি আর তৈরি হয় না। আপনার স্পষ্টভাবে আপনার সমস্ত ভেরিয়েবলগুলি ঘোষণা করা উচিত।
গ্লোবাল ফুটো
এমন অনেকগুলি পরিস্থিতি রয়েছে যা this
বৈশ্বিক বস্তুর সাথে আবদ্ধ হতে পারে। উদাহরণস্বরূপ, যদি আপনি new
কনস্ট্রাক্টর ফাংশন কল করার সময় উপসর্গটি প্রদান করতে ভুলে যান তবে কনস্ট্রাক্টর this
অপ্রত্যাশিতভাবে গ্লোবাল অবজেক্টের সাথে আবদ্ধ হবে, সুতরাং কোনও নতুন অবজেক্টটি আরম্ভ করার পরিবর্তে এটি চুপচাপ গ্লোবাল ভেরিয়েবলের সাথে চলাচল করবে। এই পরিস্থিতিতে, কঠোর মোড পরিবর্তে আবদ্ধ this
হবে undefined
, যার ফলে নির্মাণকারী পরিবর্তে একটি ব্যতিক্রম ছুঁড়ে ফেলবে, ত্রুটিটি খুব শীঘ্রই সনাক্ত করা যাবে।
গোলমাল ব্যর্থতা
জাভাস্ক্রিপ্টটিতে সর্বদা পঠনযোগ্য বৈশিষ্ট্য রয়েছে তবে আপনি ES5 এর Object.createProperty
কার্যকারিতাটি সক্ষমতা প্রকাশ না করা পর্যন্ত আপনি সেগুলি নিজে তৈরি করতে পারবেন না । আপনি যদি কেবল পঠনযোগ্য সম্পত্তিতে কোনও মূল্য নির্ধারণের চেষ্টা করেন তবে তা নিঃশব্দে ব্যর্থ হবে। অ্যাসাইনমেন্টটি সম্পত্তিটির মান পরিবর্তন করবে না, তবে আপনার প্রোগ্রামটি যেমন চলছিল তেমন এগিয়ে চলবে। এটি এমন একটি অখণ্ডতা বিপত্তি যা প্রোগ্রামগুলিকে বেমানান অবস্থায় যেতে পারে। কঠোর মোডে, কেবল পঠনযোগ্য সম্পত্তি পরিবর্তন করার চেষ্টা করা ব্যতিক্রম করবে।
অকট্যাল
সংখ্যার অষ্টাল (বা বেস 8) প্রতিনিধিত্বগুলি অত্যন্ত কার্যকর ছিল যখন মেশিন-স্তরের প্রোগ্রামিংগুলি মেশিনগুলিতে যার শব্দ আকারগুলি 3 এর একাধিক ছিল, যখন আপনাকে সিডিসি 6600 মেইনফ্রেমের সাথে কাজ করার সময় অষ্টাল দরকার ছিল, যার শব্দের আকার ছিল 60 বিট। আপনি যদি অষ্টালটি পড়তে পারেন তবে আপনি কোনও শব্দকে 20 অঙ্ক হিসাবে দেখতে পারেন। দুটি সংখ্যা ওপ কোডকে উপস্থাপন করে এবং 8 টি রেজিস্টারের মধ্যে একটি অঙ্ক চিহ্নিত করে। মেশিন কোডগুলি থেকে উচ্চ স্তরের ভাষাগুলিতে ধীরে ধীরে রূপান্তরকালে, প্রোগ্রামিং ভাষাগুলিতে অক্টাল ফর্মগুলি সরবরাহ করার জন্য এটি দরকারী বলে মনে করা হয়েছিল।
সি-তে, অক্টালেন্সের একটি অত্যন্ত দুর্ভাগ্যজনক উপস্থাপনা নির্বাচন করা হয়েছিল: শূন্যের শীর্ষে। সুতরাং সি এর 0100
অর্থ, 100 নয়, 64 নয় এবং 08
এটি একটি ত্রুটি 8 নয়, এমনকি আরও দুর্ভাগ্যক্রমে, এই অ্যানক্রোনজমটি জাভাস্ক্রিপ্ট সহ প্রায় সমস্ত আধুনিক ভাষায় অনুলিপি করা হয়েছে, যেখানে এটি কেবল ত্রুটি তৈরি করতে ব্যবহৃত হয়। এর অন্য কোনও উদ্দেশ্য নেই। সুতরাং কঠোর মোডে, অষ্টাল ফর্মগুলির আর অনুমতি নেই।
ইত্যাদি
আর্গুমেন্ট সিউডো অ্যারেটি ES5 তে আরও কিছুটা অ্যারে-জাতীয় হয়ে যায়। কঠোর মোডে, এটি এর callee
এবং caller
বৈশিষ্ট্যগুলি হারাতে পারে। এটি arguments
অনেক গোপনীয় প্রসঙ্গ ছাড়াই আপনার অবিশ্বস্ত কোডে পাস করা সম্ভব করে। এছাড়াও,
arguments
ফাংশনগুলির সম্পত্তি মুছে ফেলা হয়।
কঠোর মোডে, একটি ফাংশন আক্ষরিক ডুপ্লিকেট কীগুলি একটি সিনট্যাক্স ত্রুটি তৈরি করে। একটি ফাংশনে একই নামে দুটি পরামিতি থাকতে পারে না। কোনও ফাংশনে এর প্যারামিটারগুলির মধ্যে একটির মতো একই ভেরিয়েবল থাকতে পারে না। একটি ফাংশন delete
তার নিজস্ব ভেরিয়েবলগুলি করতে পারে না । delete
একটি অ-কনফিগারযোগ্য সম্পত্তি করার প্রচেষ্টা
এখন একটি ব্যতিক্রম ছোঁড়ে। আদিম মানগুলি স্পষ্টভাবে মোড়ানো হয় না।
ECMAScript 5 সংরক্ষিত শব্দের একটি তালিকা যুক্ত করে। আপনি যদি এগুলি ভেরিয়েবল বা আর্গুমেন্ট হিসাবে ব্যবহার করেন তবে কঠোর মোড ত্রুটি ছুঁড়ে দেবে। সংরক্ষিত শব্দগুলি হ'ল: