জাভাস্ক্রিপ্ট টিউটোরিয়াল-শিখুন গল্পে গল্পে সাথে 1100+ Exercise

  • জাভাস্ক্রিপ্ট পরিচিতি-Introduction to JavaScript
  • প্রোগ্রামিং শুরু করতে কতটুকু গণিত লাগে?
  • প্রোগ্রামিং শুরু করতে কতটুকু ইংরেজি জানা লাগে?
  • ভালো প্রোগ্রামার কিভাবে হবো? [+৭টি গুরুত্বপূর্ণ টিপস]
  • উল্টাপথের do ... while
  • Switch টিপে case জিতো
  • with eval ইবলিস
  • জাভাস্ক্রিপ্ট অঙ্ক বুঝে না
  • if যদি IIFE হয়
  • use strict-এর কড়া স্যার

use strict-এর কড়া স্যার


সব স্কুলেই কড়া একজন স্যার থাকেন। স্যারের সামনে একদম সব স্টুডেন্ট আতঙ্কের মতো থাকে। কোনো টু শব্দ নাই। কেউ কোনো দুষ্টুমি-বাঁদরামি করার চিন্তাও করে না। এমনকি একটা মাছি-মশাও স্যারের সামনে আসার কথা চিন্তা করে না। জাভাস্ক্রিপ্টেও এমন একটা কড়া স্যার আছে। খুবই কড়া। খুবই স্ট্রিক্ট।


এই স্ট্রিক্ট হওয়ার জন্য হয় জাভাস্ক্রিপ্টের ফাইলের প্রথম লাইন হিসেবে "use strict" লিখে দিতে পারস। তাহলে পুরা ফাইলের সব কোড স্ট্রিক্ট মোডে চলবে। একইভাবে তুই চাইলে একটা ফাংশনের ভিতরে প্রথম লাইন হিসেবে "use strict" লিখে দিতে পারস। তাহলে সেই ফাংশনের ভিতরের সব কোড স্ট্রিক্ট মোডে চলবে। 


এ ছাড়া ES6-এর মডিউলে ডিফল্টভাবে স্ট্রিক্ট মুড অন করা থাকে। তাই ES6-এর মডিউলে আলাদাভাবে "use strict" লিখতে হয় না । 


১. ভেরিয়েবল ডিক্লেয়ার না করলে এরর 

কোনো একটা ভেরিয়েবল ডিক্লেয়ার করার আগে আমরা const বা let লিখি। কিন্তু কখনো যদি ভুলে let const না লিখি নরমাল একটা জাভাস্ক্রিপ্ট ফাইলে, সে কিন্তু কাজ করবে এবং একটু সমস্যা করে ফেলবে। সে ভিতরে ভিতরে গ্লোবাল ভেরিয়েবল হয়ে যাবে। অর্থাৎ পুরা কোডের সব জায়গা থেকে তাকে এক্সেস করা যাবে। 


মাঝেমধ্যে অল্প কয়েকটা গ্লোবাল ভেরিয়েবলের দরকার হয়। তবে অনিচ্ছাকৃতভাবে গ্লোবাল ভেরিয়েবল তৈরি করা উচিত না। এতে প্রোগ্রমিংয়ের মেমোরি ম্যানেজমেন্টে সমস্যা হয়। আবার অনেক ক্ষেত্রে একই নাম একাধিক জায়গায় কনফ্লিক্ট করে ফেলে। ভুল মান দিতে পারে, আরও অনেক সমস্যা।


তাই "use strict" ইউজ করলে নরমাল জাভাস্ক্রিপ্ট ফাইলেও কিন্তু এরর দিয়ে বসবে। 

  'use strict';
  x = 10
Output: ReferenceError: x is not defined


ভেরিয়েবল সব সময় let বা const দিয়ে ডিক্লেয়ার করতে হবে।


২. ডুপ্লিকেট প্যারামিটার 

এমন কোনো কারণ নাই যে, কোনো একটা ফাংশনে একই নামে একাধিক প্যারামিটার থাকবে। তারপরেও কেউ এইটা করে ফেললে নরমাল জাভাস্ক্রিপ্ট কোনো কিছু বলবে না। তবে স্ট্রিক্ট মুডে থাকলে সে এরর দিয়ে দিবে। 

  

  "use strict"
  function add(a, a){

  }

OutputSyntaxError: Duplicate parameter name not allowed


৩. this নাই 

নরমাল জাভাস্ক্রিপ্টে ফাংশনের ভিতরের this গ্লোবাল অবজেক্টকে (যেমন ব্রাউজারে window) বুঝায়, এতে মাঝেমধ্যে কিছু কনফিউশন চলে আসতে পারে। তাই স্ট্রিক্ট মোড এটা বন্ধ করে দেয় এবং স্ট্রিক্ট মোডে ফাংশনের ভিতরে this যদি কোনো অবজেক্টের অংশ না হয়, তাহলে এটা undefined হবে।


  "use strict"
  function getContext (){
    console.log(this);
  }

  getContext();

output: undefined 


এই রকম আরও অনেকগুলা রেস্ট্রিকশন থাকে স্ট্রিক্ট মুডে। যেমন, জাভাস্ক্রিপ্টে কিছু রিজার্ভড ওয়ার্ড (যেমন private, protected, interface, package, implements) আছে, যেগুলা ফিউচারে ইউজ করার জন্য রেখে দিছে। নরমাল জাভাস্ক্রিপ্টে এই নামগুলো ইউজ করে ভেরিয়েবল ডিক্লেয়ার করা যায়। কিন্তু স্ট্রিক্ট মুডে এই নামগুলো দিয়ে ভেরিয়েবল ডিক্লেয়ার করা যায় না।


Practice: 

  1. স্ট্রিক্ট মুড কেন ইউজ করা হয়?


Previous PageNext Chapter