জাভাস্ক্রিপ্ট কঠোর মডেল

"use strict"; জাভাস্ক্রিপ্ট কোডকে "কঠোর মডেল"-এর মধ্যে কার্যকর হওয়ার জন্য নির্দেশ দেয়。

"use strict" নির্দেশ

"use strict" এটা JavaScript 1.8.5-এর একটি নতুন নির্দেশ (ECMAScript version 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) বা স্ট্রিং টেক্সট (\

সবই "use strict"; শুধুমাত্র যাঁরা তার অর্থ বোঝেন, তাঁদের কাছেই নতুন কম্পাইলারকে প্রভাব ফেলবে।

কেন স্ট্রিক্ট মোড ব্যবহার করা যায়?

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

স্ট্রিক্ট মোড পূর্বে অনুমতিপ্রাপ্ত "খারাপ গ্রামার"-কে একটি ত্রুটি হিসাবে পরিবর্তন করে।

উদাহরণ হিসাবে, সাধারণ জেভাস্ক্রিপ্টে, ভ্যারিয়েবল নাম ভুল লিখলে নতুন গ্লোবাল ভ্যারিয়েবল তৈরি হবে। স্ট্রিক্ট মোডে, এটা ত্রুটি ফেলবে, যার ফলে নতুন গ্লোবাল ভ্যারিয়েবল অপসারণ হবে।

সাধারণ জেভাস্ক্রিপ্টে, অলিখিত বৈশিষ্ট্যকে মূল্য দিলে ডেভেলপারকে কোনো ত্রুটি ফেলবে না।

স্ট্রিক্ট মোডে, অলিখিত, শুধু পড়ার, অস্তিত্ব না থাকা বৈশিষ্ট্যকে অর্থাৎ অস্তিত্ব না থাকা ভ্যারিয়েবল বা অবজেক্টকে অর্থাৎ একটি ভ্যারিয়েবল বা অবজেক্টকে মূল্য দেওয়ার ক্ষেত্রে ত্রুটি ফেলবে।

স্ট্রিক্ট মোডের অনুমতিহীন বিষয়

ভ্যারিয়েবলকে ঘোষণা করা না কেন ব্যবহার করা যায় না:

"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;    // 这将引发错误

আপনার নিজেই প্রয়াস করুন

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" ইনস্ট্রাকশনগুলি শুধুমাত্র স্ক্রিপ্ট বা ফাংশনেরশুরুপরিচিত