উত্তর:
যদি আপনাকে উত্পাদন কোডে বিশ্বব্যাপী ভেরিয়েবলগুলি উত্পন্ন করতে হয় (যা এড়ানো উচিত) সর্বদা তাদের স্পষ্টভাবে ঘোষণা করুন :
window.globalVar = "This is global!";
যদিও এটা ঠিক বাদ দ্বারা একটি বিশ্বব্যাপী পরিবর্তনশীল সংজ্ঞায়িত করা সম্ভব var
(অভিমানী সেখানে একই নামের কোন স্থানীয় পরিবর্তনশীল), এমনটি একটি উত্পন্ন অন্তর্নিহিত বিশ্বব্যাপী, যা একটি খারাপ জিনিস করতে হয় এবং একটি ত্রুটি উৎপন্ন হবে কঠোর মোডে ।
আপনি যদি এই ভেরিয়েবলটি ব্যবহার করতে যাচ্ছেন তবে এটিই যদি অ্যাপ্লিকেশন হয় তবে ফেলিক্সের দৃষ্টিভঙ্গি দুর্দান্ত। তবে আপনি যদি jQuery প্লাগইন লিখছেন তবে "নেমস্পেসিং" (পরে উদ্ধৃতিতে বিশদ ...) ভেরিয়েবল এবং jQuery অবজেক্টের অধীনে প্রয়োজনীয় ফাংশন বিবেচনা করুন। উদাহরণস্বরূপ, আমি বর্তমানে একটি jQuery পপআপ মেনুতে কাজ করছি যা আমি মিনিমেনু বলেছি। সুতরাং, আমি miniMenu
jQuery এর অধীনে একটি "নেমস্পেস" সংজ্ঞায়িত করেছি এবং আমি সবকিছু সেখানে রেখেছি।
আমি যখন জাভাস্ক্রিপ্ট নেমস্পেসগুলি নিয়ে কথা বলি তখন उद्धरणগুলি ব্যবহার করার কারণটি হ'ল এগুলি সত্যিকার অর্থে স্বাভাবিক অর্থে নেমস্পেস নয়। পরিবর্তে, আমি কেবল একটি জাভাস্ক্রিপ্ট অবজেক্ট ব্যবহার করি এবং আমার সমস্ত ফাংশন এবং ভেরিয়েবলগুলি এই বস্তুর বৈশিষ্ট্য হিসাবে রাখি।
এছাড়াও, সুবিধার জন্য, আমি সাধারণত প্লাগইনের i
মধ্যে অভ্যন্তরীণভাবে ব্যবহার করা উচিত এমন স্টাফগুলির জন্য একটি নেমস্পেসের সাথে প্লাগইন নেমস্পেসটি সাব-স্পেস করে রাখি, যাতে এটি প্লাগইন ব্যবহারকারীর কাছ থেকে আড়াল করা যায়।
এটা এভাবে কাজ করে:
// An object to define utility functions and global variables on:
$.miniMenu = new Object();
// An object to define internal stuff for the plugin:
$.miniMenu.i = new Object();
এখন আমি ঠিক করতে পারি $.miniMenu.i.globalVar = 3
বা $.miniMenu.i.parseSomeStuff = function(...) {...}
যখনই আমার বিশ্বব্যাপী কিছু সংরক্ষণ করার প্রয়োজন হয় এবং আমি এখনও এটি বিশ্বব্যাপী নেমস্পেসের বাইরে রাখি।
delete $.miniMenu
:) মুছুন । ঠিক আছে?
delete $.miniMenu
।
সম্পাদনা করুন প্রশ্নটি জাভাস্ক্রিপ্ট সম্পর্কে, উত্তরটি jQuery সম্পর্কে, যা ভুল। এটি যখনই jQuery বিস্তৃত ছিল তখন থেকে এটি একটি পুরানো উত্তর।
পরিবর্তে, আমি জাভাস্ক্রিপ্টে বুদ্ধিমান স্কোপ এবং ক্লোজারগুলির প্রস্তাব দিই
পুরানো, খারাপ উত্তর: jQuery দিয়ে আপনি কেবল এটি করতে পারেন, ঘোষণার জায়গা যেখানেই হোক না কেন:
$my_global_var = 'my value';
এবং সর্বত্র পাওয়া যাবে। আমি তাড়াতাড়ি চিত্র গ্যালারী তৈরির জন্য এটি ব্যবহার করি, যখন চিত্রগুলি বিভিন্ন জায়গায় ছড়িয়ে দেওয়া হয়:
$gallery = $('img');
$current = 0;
$gallery.each(function(i,v){
// preload images
(new Image()).src = v;
});
$('div').eq(0).append('<a style="display:inline-block" class="prev">prev</a> <div id="gallery"></div> <a style="display:inline-block" class="next">next</a>');
$('.next').click(function(){
$current = ( $current == $gallery.length - 1 ) ? 0 : $current + 1;
$('#gallery').hide().html($gallery[$current]).fadeIn();
});
$('.prev').click(function(){
$current = ( $current == 0 ) ? $gallery.length - 1 : $current - 1;
$('#gallery').hide().html($gallery[$current]).fadeIn();
});
টিপ : এই পৃষ্ঠায় কনসোলে পুরো কোডটি চালান ;-)
$current = 0;
ফাংশনটি শুরুতে সংজ্ঞায়িত না করেন তবে পরবর্তী কোনওটি কাজ করবে না।
এখানে আপনার বৈশ্বিক পরিবর্তনশীলের একটি বেসিক উদাহরণ যা আপনার বাকী বাক্যগুলি অ্যাক্সেস করতে পারে। এখানে আপনার জন্য একটি সরাসরি উদাহরণ: http://jsfiddle.net/fxCE9/
var myVariable = 'Hello';
alert('value: ' + myVariable);
myFunction1();
alert('value: ' + myVariable);
myFunction2();
alert('value: ' + myVariable);
function myFunction1() {
myVariable = 'Hello 1';
}
function myFunction2() {
myVariable = 'Hello 2';
}
যদি আপনি এটি কোনও জিকিউরিটি রেডি () ফাংশনের মধ্যে করছেন তবে আপনার ভেরিয়েবলটি আপনার অন্যান্য ফাংশন সহ রেডি () ফাংশনের অভ্যন্তরে রয়েছে তা নিশ্চিত করুন।
ফাংশনের বাইরে চলকটি ঘোষণা করুন
function dosomething(){
var i = 0; // can only be used inside function
}
var i = '';
function dosomething(){
i = 0; // can be used inside and outside the function
}
সবচেয়ে ভাল উপায় হ'ল ব্যবহার করা closures
, কারণ window
বস্তুটি খুব, খুব বৈশিষ্ট্যযুক্ত বিশৃঙ্খল হয়ে যায়।
এইচটিএমএল
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="init.js"></script>
<script type="text/javascript">
MYLIBRARY.init(["firstValue", 2, "thirdValue"]);
</script>
<script src="script.js"></script>
</head>
<body>
<h1>Hello !</h1>
</body>
</html>
init.js ( এই উত্তরের ভিত্তিতে )
var MYLIBRARY = MYLIBRARY || (function(){
var _args = {}; // private
return {
init : function(Args) {
_args = Args;
// some other initialising
},
helloWorld : function(i) {
return _args[i];
}
};
}());
script.js
// Here you can use the values defined in the html as if it were a global variable
var a = "Hello World " + MYLIBRARY.helloWorld(2);
alert(a);
এখানে plnkr । আশা করি এটি সাহায্য করবে!
window
শুধুমাত্র ব্রাউজারে উপলব্ধ। এটিকে সমস্ত পরিবেশে কাজ করার জন্য আপনি কি উত্তরটি সম্পাদনা করতে পারবেন? দেখুন জাভাস্ক্রিপ্ট বৈশ্বিক বস্তুর পেতে কিভাবে?