উপরোক্ত কাজগুলি থেকে কিছুই থামায় না, তবে ধরে রাখুন!
কিছু গোটচাস আছে। জাভাস্ক্রিপ্টে বরাদ্দকরণ ডান থেকে বাম তাই আপনি যখন লেখেন:
var moveUp = moveDown = moveLeft = moveRight = mouseDown = touchDown = false;
এটি কার্যকরভাবে অনুবাদ করে:
var moveUp = (moveDown = (moveLeft = (moveRight = (mouseDown = (touchDown = false)))));
যা কার্যকরভাবে অনুবাদ করে:
var moveUp = (window.moveDown = (window.moveLeft = (window.moveRight = (window.mouseDown = (window.touchDown = false)))));
অসাবধানতাবশত, আপনি সবেমাত্র 5 টি বৈশ্বিক ভেরিয়েবল তৈরি করেছেন - এমন কিছু যা আমি নিশ্চিত যে আপনি করতে চাননি।
দ্রষ্টব্য: আমার উপরের উদাহরণটি ধরে নিয়েছে আপনি ব্রাউজারে আপনার কোড চালাচ্ছেন, তাই window। আপনি যদি অন্য কোনও পরিবেশে থাকতেন তবে এই পরিবর্তনগুলি সেই পরিবেশের জন্য বিশ্বব্যাপী প্রসঙ্গটি যা ঘটবে তা সংযুক্ত করবে (যেমন, নোড.জেজে, এটি সংযুক্ত হবে)global সেই পরিবেশের জন্য বৈশ্বিক প্রেক্ষাপট যা )।
এখন আপনি প্রথমে আপনার সমস্ত ভেরিয়েবলগুলি ঘোষণা করতে পারেন এবং তারপরে সেগুলি একই মান হিসাবে নির্ধারণ করতে পারেন এবং আপনি সমস্যা এড়াতে পারেন।
var moveUp, moveDown, moveLeft, moveRight, mouseDown, touchDown;
moveUp = moveDown = moveLeft = moveRight = mouseDown = touchDown = false;
দীর্ঘ গল্প সংক্ষিপ্ত, উভয় উপায়ে ঠিক কাজ করবে, তবে প্রথম উপায়টি সম্ভবত আপনার কোডে কিছু ক্ষতিকারক বাগ প্রবর্তন করতে পারে। গ্লোবাল নেমস্পেসের স্থানীয় ভেরিয়েবলগুলির সাথে লিটারে পাপ করবেন না যদি একেবারে প্রয়োজনীয় না হয়।
সিডিনোট: মন্তব্যগুলিতে যেমন উল্লেখ করা হয়েছে (এবং এটি কেবল এই প্রশ্নের ক্ষেত্রে নয়) তবে যদি প্রশ্নের অনুলিপি করা মান কোনও আদিম মান না হয়ে পরিবর্তে কোনও বস্তু ছিল তবে আপনি রেফারেন্স দ্বারা মান বনাম অনুলিপি দ্বারা অনুলিপি সম্পর্কে আরও ভাল জানেন know যখনই অবজেক্টগুলি বরাদ্দ করা হয় তখন অবজেক্টের রেফারেন্সটি আসল বস্তুর পরিবর্তে অনুলিপি করা হয়। সমস্ত ভেরিয়েবলগুলি একই পদার্থের দিকে ইঙ্গিত করবে তাই একটি ভেরিয়েবলের যে কোনও পরিবর্তন অন্য ভেরিয়েবলগুলিতে প্রতিফলিত হবে এবং যদি আপনার উদ্দেশ্য উদ্দেশ্যটির অনুলিপিটি নয়, তবে রেফারেন্সটি নয় তবে আপনাকে বড় মাথাব্যথার কারণ করে।