گزارشهای متعددی در ارتباط با احتکار مواد معدنی و فلزات توسط چینیها منتشر میشود. موادی همچون لیتیوم، عناصر خاکی کمیاب، مس و منگنز که برای فناوریهای جدید حیاتی هستند و کاربردهای متنوعی از گوشیهای هوشمند تا خودروهای الکتریکی دارند. از سال ۲۰۱۵ چین اولین تولیدکننده و عرضهکنندهی ۲۳ عدد از ۴۱ عنصر حیاتی جهان است. این عناصر، طبق نظر انجمن زمینشناسی بریتانیا برای حفظ اقتصاد و زندگی روزمرهی مردم جهان، حیاتی هستند. بهعلاوه، آن کشور توزیع ۹ عدد از ۱۰ عنصر در معرض اتمام جهان را نیز بهصورت انحصاری در اختیار دارد.
نکتهی مهم دیگر آن است که چینیها در فکر انحصار و احتکار سهم عمدهای از جریان سرویسهای آنلاین با ظرفیتهای بالا نیز هستند. سرویسهایی که به صنایع جدید ختم میشوند و آن صنایع، به ارتباط سریع انسان و ماشینها وابسته هستند. درنهایت، همین ارتباطات سریع و لحظهای، باعث ظهور فرصتها و شغلها جدید در جهان میشود.
یکی از پروژههای مهم و بلندپروازانهی چین در صنعت فناوری، راه ابریشم نام دارد. آنها زیرساخت و سرمایههای لازم را در ۷۰ کشور تأمین میکنند که تأثیرات مهمی روی ۴۰ درصد از اقتصاد جهان خواهد گذاشت. در بخشی از آن پروژه، هر خط ریلی حاضر در مسیر اوراسیا (خط اتصالی اروپا و آسیا) و درگیر با پروژهی راه ابریشم، به خطوط پر سرعت فیبر نوری مجهز خواهند شد که دادهها را با سرعت هرچه بیشتر بین خطوط اتصالی جابهجا میکنند. برنامهی مهم و مشابه دیگر چین، ارائهی خطوط پر سرعت فیبر نوری، به ۸۰ درصد از خانههای موجود در کشور است.
برنامههای بلندپروازانهی چین برای پیادهسازی خطوط فیبر نوری، عواقب متعددی خواهد داشت. بهعنوان مثال، آنها در ارتباط با روسیه و اروپا، نیازی به استفاده از فیبرهای نوری زیر اقیانوس هند ندارد. خطوطی که همیشه تهدید نظارت از سوی آمریکاییها را به همراه داشتهاند. از آن مهمتر، چینیها با خطوط جدید به بازار بسیار بزرگ مصرفکنندهها و کسبوکارها در محدودهی زمینی بسیار بزرگی دسترسی خواهند داشت. محدودهای که آسیای میانه را به روسیه و چین متصل میکند.

کابلهای فیبر نوری به بیان ساده ساختهشده از تارهای نازک شیشهای به ضخامتهایی حتی کمتر از تار مو هستند. پالسهای نوری شامل دهها هزار گیگابیت از داده، در هر ثانیه و با بهرهگیری از فناوری لیزر از میان این تارها عبور میکنند. فناوری فیبر نوری، از چند سال پیش، جای خود را در میان فناوریهای ارتباطی باز کرده است. امروزه، آن نوع از کابلها در بسیاری از کشورهای جهان و همچنین، خطوط بین کشورها و قارهها برای ارتباط سریعتر استفاده میشوند.
تا اینجای کار، برنامهی راه ابریشم جدید چین و طرحهای آنها برای توسعهی فناوریهای ارتباطی در اقصی نقاط جهان، مشکل خاصی ندارد. چالش از آنجا شروع میشود که به احتمال زیاد، این کشور قصد دارد مجوز پیادهسازی فناوریهای 5G و اتصال به آن مسیر را تنها به هواوی و چند شرکت چینی دیگر بدهد. دربارهی تبادل اطلاعات بهصورت بیسیم باید بدانید که ۹۰ درصد اطلاعات جابهجا شده، ازطریق کابلی متصل به یک سلول ارتباطی جابهجا میشود که آن سلول، اطلاعات را ازطریق هوا دریافت میکند. در بحث 5G، کابل اتصالی باید حتما فیبر نوری باشد.
شرکت یا سازمانهایی که کابلهای فیبر نوری را پیادهسازی میکنند، حق اعطای مجوز نصب تجهیزات 5G به کابلهای خود را دارند. دربارهی چین، قطعا آنها ترجیج میدهند تا تجهیزات ساخت کشور خودشان به آن کابلها متصل شود.
عنصر اساسی و مهم در فناوری 5G آن است که شرکتهای فعال در حوزهی وایرلس، بتوانند از سرویسهای خود درآمدزایی بهتری داشته باشند. دراقع، آنها نمیخواهند شبیه به شرایط کنونی، به کسبوکارهای آنلاین وابسته باشند. برای اپراتورها و ارائهدهندههای خدمات شبکه، نقطهی مثبت 5G، امکان تقسیمبندی شبکه است. چنین امکانی به اپراتورها امکان میدهد تا چندین شبکهی خصوصی و شخصیسازیشده را برای مشتریان خاص یا کاربردهای متنوع بسازند. چنین رویکردی، درآمدهای بالا و مبتنی بر خدمات را به سمت آنها روانه میکند که اکنون و با فناوری 4G قابل دستیابی نیست.

در فناوری 5G، هر اپراتوری میتواند شبکهی خود را بهصورت لحظهای تعریف کند. آنها میتوانند سرویسهای خود را در سطوح مختلف و بسته به بازار هدف، تغییر دهند. بهعلاوه، اپراتورها حکم نگهبان ورود اپلیکیشنهای مختلف به شبکه را نیز خواهند داشت. چنین قابلیتهایی، قدرت قیمتگذاری آنها را بسیار افزایش میدهد و البته، یکی از اصلیترین فرضیههای دنیای اینترنت را نیز زیر سؤال میبرد. آن فرضیه میگوید که هر کامپیوتر حاضر در شبکهی اینترنت باید بتواند با زبانی برابر با کامپیوتر دیگر ارتباط برقرار کند. در فناوری جدید، جابهجایی بیتهای اطلاعات کاملا براساس نرمافزار و بهصورت مجازی تعریف میشود. درنهایت باید شبکهی جدید را به چشم یک شبکهی کابلی اختصاصی، بهجای اینترنت، در نظر بگیریم.
هواوی، بهعنوان بزرگترین عرضهکنندهی خدمات و تجهیزات مخابراتی در جهان، قطعا بهدنبال انحصار در مناطق جغرافیایی محل فعالیت خود خواهد بود. چنین رویکردی، در صنعت مخابرات رایج است. شرکتهایی که سرمایهگذاریهای عظیمی روی زیرساخت داشتهاند، بهدنبال افزایش قلمروی خود هستند تا از رقابتهای مخرب آتی پیشگیری کنند. این رخداد قبلا در صنعت کابل ایالات متحده رخ داد. شرکتهای مخابراتی آنها در سال ۱۹۹۷ تفاهمی امضا کردند تا سیستمهای خود را با هم مبادله و ترکیب کنند و از حجم بالای بازار جدید، سود ببرند.
از پیشفرضهای بالا به این نتیجه میرسیم که هواوی و احتمالا چند شرکت دیگر چینی، کنترل دسترسی سرویسهای غنی از داده را به بازار جهانی چین ازطریق 5G خواهند داشت. سرویسهای غنی از داده، بازهی وسیعی از انبارداری و لجستیک، خدمات پزشکی از راه دور، آموزش، واقعیت مجازی و موارد مشابه را شامل میشوند.
در نتیجهی فرضیههای بالا، چین با همکاری اپراتورهای 5G خود میتواند شرکتهای آمریکایی را از دسترسی به بازارهای پرسود فوق، باز بدارد. چنین رویکردی اکنون در داخل مرزهای آن کشور پیاده میشود. برنامهی جادهی ابریشم، پیادهسازی آن روشها را در گسترهی وسیعی از جغرافیا ممکن میکند که ۶۵ درصد از جمعیت جهان را تشکیل میدهد. تا آن زمان، چینیها اینترنت اختصاصی بینالمللی خود را توسعه خواهند داد که سرویسهای با ظرفیت بسیار بالا و خارج از محدودهی درک کنونی ما دارد.
شاید در نگاه اول، نگرانی مهم دیگری با موضوع افزایش نظارت چین بر ارتباطات به ذهن برد. البته، میتوان بهجای آن، به افزایش بهرهوری و رشد اقتصادی حاصل از اجرای چنین برنامههایی را در نظر گرفت. توانایی حضور در جلسههای متعدد از پزشک گرفته تا کلاسهای آموزشی، ارتباط سریع با یکدیگر و جابهجایی فایلهای حجیم، تنها بخشی از ظرفیتهای فناوری آینده هستند که با پیادهسازی برنامههای حرفهای چین در حوزهی فیبر و اتصالات وایرلس ممکن میشوند.
توسعهی طرحهای چین در موضوعات گفته شده، قطعا تهدیدهایی را برای آمریکا به همراه خواهد داشت. شرکتهای آن کشور، شانسی برای حضور در این زمینه ندارند. درنتیجه، چین و نه آمریکا، محل تولد سرویسهای جدید آنلاین میشود. اگرچه آمریکا برای اولینبار به ایدهی اینترنت دست یافت، آنها اکنون ظرفیتهای لازم برای تست فناوریهای جدید و بازارهای عظیم برای عرضهی خدمات را ندارند. دلیل این رخداد نیز آن است که آمریکاییها، اصطلاحا مایل آخر یعنی اتصال خانهها به شبکهی پر سرعت فیبر نوری را بهخوبی انجام ندادند. آنها در بازارهای مهمی همچون آسیا و کشورهای نوردیک (شمال اروپا و شمال اقیانوس اطلس) نتوانستند خدمات خود را با فناوری کابلهای فیبر نوری به دست مصرفکنندهی نهایی برسانند.
شرکتهای مختلف آمریکایی و دولتهای محلی، تلاش زیادی انجام دادهاند تا عقبماندگی کشور خود در پیادهسازی فناوریهای نوری مناطق شهری را جبران کنند. آنها که از خدمات فدرال و شرکتهای دولتی حوزهی ارتباطات ناراضی بودند، خود دست به کار شدند و کابلهای فیبر نوری تا خانههای شهروندان توسعه دادند. طبق نظر کارشناسان آمریکایی، چنین رویکردهای سیاسی و اجرایی، باید در تمامی نقاط آن کشور پیادهسازی شود تا آنها در نبرد فناوری، پشت سر چینیها حرکت نکنند.
آروان در طول سال گذشته امکانات متنوعی به محصول CDN اضافه کرده، اما پیچیدهترین این امکانات Dynamic Content Caching و Remote Key Offloading است که CDN آروان را جزو دو CDN برتر دنیا قرار میدهد.
آروان نام میگمیگ را برای سرویس Dynamic Content Caching انتخاب کرده است که منجر به بهبود سرعت Load سایتها میشود.
صابر مسگری، کدسالار آروان دربارهی میگمیگ گفت: «با اینکه اکثر این محتوا برای بیشتر کاربران یکسان است؛ اما درخواستها بدون Cacheشدن مستقیم بهسمت سرورهای اصلی ارسال و این موضوع بار ترافیکی زیادی را برای آنها ایجاد میکرد. ما راهکاری برای Dynamic Content Caching ارائه دادیم که بهکمک آن میتونیم با Remote Differential Compression این درخواستها را مدیریت کنیم و مزایای همچون: کمتر شدن تعداد درخواستهای ارسالی سمت سرورهای اصلی و کاهش ترافیک سرورهای اصلی و افزایش سرعت نمایش صفحات برای بازدیدکننده سایت را ارائه میکند.
میگمیگ حتی در مورد محتوای استاتیک هم کمک میکند. در مورد این فایلها، میگمیگ تغییرات را تشخیص داده و فقط تغییرات را از سرورهای اصلی دریافت میکند.
با نصب نرمافزار میگمیگ روی سرورها، دیگر صاحبان وبسایتها نگرانی بابت ترافیک بالای سرور نخواهند داشت. در مورد سایتهایی که تغییرات کمی داشته باشند، این بهبود گاهی تا ۹۸درصد در حجم ترافیک میرسد و در مورد سایتهایی که محتوای آنها تغییر بسیاری دارد تا بیش از ۵۰درصد بهبود ایجاد میشود.
برای مشتریان سازمانی مانند بانکها امنیت اهمیت فوقالعادهای دارد و این امنیت از چند لایه تشکیل شده است. امروزه تمامی سایتهای مهم برای حفظ امنیت مشتریانشان از TLS استفاده میکنند و یکی از نمادهای امنیت Private Key است. این مشتریان علاقه دارند برای افزایش کیفیت خدمات، همچنین مقابله با حملات DDOS از خدمات CDN استفاده کنند، اما برایشان مهم است Private Key دست خودشان بماند.
آروان در پاسخ به این نیاز محصولی را توسعه داده که با نام OpenSesame به مشتریان ارائه میشود و Private Key را نزد خود داشته باشند.
نام اپنسِسمی از داستان علی بابا و چهل دزد بغداد از مجموعه داستانهای هزار و یک شب برگرفته شده است. در این داستان علی بابا با گفتن یک جمله و بدون داشتن کلید میتونه در غار را باز کند. «آن جمله چه بود؟ کنجد کنجد باز شو یا OpenSesame!»
این محصول ابزاری برای Remote Private Key Offloading است و مشتریان آروان میتوانند بهکمک آن از تمامی امکانات سرویسهای CDN و امنیت ابری آروان استفاده کنند، بدون آنکه کلید خصوصیشان را در اختیار آروان قرار دهند. بهعلاوه، وبسایت این مشتریان بهکمک آروان شتابدهی میشود و از گواهینامهی معتبر SSL خود مشتریان استفاده میشود.
بعضی از این ریسکها فقط مالی هستن که عموما جبرانپذیر هستند، اما صدمهی سختی به روند رشد و توسعهی بانکها میزنند، مثال آن هم از دسترس خارج شدن سرویس اینترنت بانک با حملات DDoS است. اما خطرناکتر، ریسکهایی هستن که ضربه و صدمهای به بانکها میزنند که جبرانپذیر نیست! مثل نشت و انتشار اطلاعات مشتریان یا اطلاعات امنیتی بانکها که اینبار نه فقط صدمهی مالی بلکه اعتبار و حتی مجوزهای اون بانک رو تحتالشعاع قرار میدهند.
سروش نیکپور، کارشناس ارشد امنیت داتین در رویداد سوار ابرها به معرفی راهکارهای آروان و داتین پرداخت و گفت: «CDN بانکی آروان و داتین محصولی است که با نگاهی دقیق به قوانین بانکداری و الزامات نظارتی مانند الزامات شاپرک بهینه شده است. در این محصول لایههای IDS/IPS و سیستم WAF را براساس مدل خاص ترافیک بانکی و تراکنشهاش بازنویسی کردیم تا بتونه خیلی بهتر ترافیک بد را از ترافیک سالم تشخیص بدهد و بدون اینکه مشتری بانک متوجه شود، جلوی ترافیک بد را بگیرد. سرورها را بهشکل کلی با قدرتمندترین الگوریتمها رمزگذاری کردیم تا حتی اگر سروری را خاموش کنند و بهشکل فیزیکی بدزدند به هیچ اطلاعاتی، دسترسی نخواهند داشت.»
از جمله قابلیتهای محصولی که مشتریان بانکی میتوانند برای امنیت بیشتر از آن بهرهمند شوند، میتوان به فهرست زیر اشاره کرد:
در جلسات ابتدایی آموزش جاوا اسکریپت با استرینگها و نحوه نوشتن آنها آشنا شدیم. اما اگر بخواهید در یک متغیر استرینگی تغییری ایجاد کنید یا کلمه خاصی را از یک استرینگ جدا کنید، چه کاری باید انجام دهید؟ در این جلسه به بررسی چنین موضوعاتی میپردازیم. با زومیت همراه شوید.
فرض کنید که در یک متن، دنبال لغت خاصی هستید و میخواهید اولین جایی که این لغت ظاهر شده است را ببینید. برای این کار یک متد بسیار ساده به نام indexOf() وجود دارد.
تنها کافی است تا بعد از متغیر استرینگ این متد را به کار ببرید.
در مثال زیر ابتدا متن خود را در متغیر str ذخیره کردهایم و سپس با متد indexOf شماره و شمارهای که این لغت در آن ذخیره شده است را پیدا کردهایم.
var str = "Please locate where 'locate' occurs!";
var pos = str.indexOf(“locate");
اگر بخواهیم آخرین نقطهای که این کلمه استفاده شده است را پیدا کنیم نیز از متد lastIndexOf(“locate"); استفاده میکنیم.
در صورتی که متن مورد نظرمان پیدا نشود، عدد -۱ به عنوان پاسخ بازگردانده خواهد شد.
دقت کنید که خروجی متد indexOf عدد است! مثلا در این متد، عدد ۷ به عنوان خروجی بازگردانده خواهد شد. یعنی هفتمین کلمه (با احتساب اسپیسها) بازگردانده خواهد شد.
گاهی میخواهیم یک تکه از متن را جدا کنیم! این کار از طریق متد indexOf که تاکنون آموختهایم، امکانپذیر نیست. این متدها فقط محل وجود یک متن را بررسی میکنند. برای تکه تکه کردن متن و به دست آوردن یک بخش از آن از سه متد زیر استفاده میشود.
slice(start, end)
substring(start, end)
substr(start, length)
در متد slice نقطه شروع کلمه را به عنوان پارامتر اول و نقطه پایان کلمه را به عنوان پارامتر دوم مینویسیم.
برای مثال فرض کنید که یک جمله استرینگی به صورت متغیر str داریم. حالا میخواهیم کلمه Banana را از این استرینگ جدا کنیم. برای این کار میتوانیم از متد slice استفاده کنیم. این متد همانطور که گفتیم محل اولین کلمه و آخرین کلمه را میگیرد و هر چه در بین این دو عدد وجود دارد را به ما خروجی میدهد.
var str = "Apple, Banana, Kiwi";
var res = str.slice(7, 13);
مثلا اگر شروع حرف ما در جمله بالا B باشد،کلمه B به عنوان ششمین کلمه (با احتساب صفر) در این استرینگ است. حرف آخر کلمه مورد نظر ما نیز a است که حرف یازدهم از کل استرینگ محسوب میشود. پس متغیر اول شش و متغیر دوم ۱۲ است! حالا این دو متغیر را در متد اسلایس مینویسیم و در خروجی متن مورد نظرمان را دریافت میکنیم!
توجه داشته باشید میتوانید جستجو برای بریدن کلمات از جمله را از آخر یک استرینگ نیز شروع کنید.برای اینکار تنها کافی است تا به جای عدد مثبت در پارامترها، عدد منفی وارد کنید! مشاهده میکنید که جستجو از کلمه آخر به اول آغاز میشود.
var str = "Apple, Banana, Kiwi";
var res = str.slice(-12, -6);
نکته: اگر در متد slice، تنها یک عدد اول را بنویسیم، تمام استرینگ بعد از این کلمه جدا خواهد شد. برای مثال:
var str = "hello, mohammad hossein";
var finalResponse = str.slice(7);
alert(finalResponse) // خروجی تمامی کلمات داخل استرینگ بعد از hello خواهد بود
این متد مشابه دقیقا متد اسلایس عمل میکند. تنها باید توجه کنید که مقادیر منفی نمیتوانید به عنوان پارامتر بدان بدهید. این بدین معناست که نمیتوانید جستجو را از انتهای استرینگها آغاز کنید.
این متد هم مانند متدهای قبلی عمل میکند! منتها پارامتر دومی که میگیرد عدد و مکان آخرین لغت مورد نظر نیست بلکه تعداد کلماتی است که بعد از پارامتر اول شمرده میشود!
var str = "Apple, Banana, Kiwi";
var res = str.substr(7, 6);
خروجی باز هم کلمه Banana خواهد بود که در واقع ۶ کلمه بعد از شروع جستجو (کلمه شماره هفتم یعنی کلمه b در لغت banana) است.
همچنین اگر بخواهیم کل استرینگ بعد از پارامتر اول را جدا کنیم، تنها کافی است تا عدد دوم را خالی بگذاریم. بدین ترتیب کل جمله بعد از آن جدا میشود.
اگر بخواهید بخشی از یک متن را عوض کنید و متن دیگری بنویسید متد replace کارگشای شما است.
str = "Please visit Microsoft!";
var replacedSentese = str.replace("Microsoft", "W3Schools");
در این متد، پارامتر اول چیزی است که میخواهیم عوض شود و پارامتر دوم چیزی است که میخواهیم جایگزین پارامتر اول شود! به همین سادگی!
یک متد دیگر متنها در جاوا اسکریپت، تبدیل تمامی حروف به حروف بزرگ یا برعکس است! متد انجام این کار نیز به سادگی انجام میشود؛ تنها کافی است بعد از متغیر حاوی متن دستور نقطه toLowerCase() برای تبدیل همه حروف به حروف کوچک یا toUpperCase() برای تبدیل همه حروف به حرف بزرگ استفاده کنید.
var text1 = "Hello World!"; // String
var text2 = text1.toUpperCase(); // text2 is text1 converted to upper
var text1 = "Hello World!"; // String
var text2 = text1.toLowerCase(); // text2 is text1 converted to lower
متد concat() برای چسباندن دو متن جدا از هم به یکدیگر استفاده میشود. برای استفاده از این متد باید دو استرینگ مجزا داشته باشیم. مثلا فرض کنیم دو استرینگ به صورت زیر داریم:
var name = "mohammad hosssein ";
var family = "malek!";
var nameAndFamily = name.concat(family);
در این متد، استرینگ نوشته شده به عنوان پارامتر concat (یعنی family) به انتهای استرینگی که متد concat را روی آن فراخوانی کردهایم (یعنی name) میچسبد.
کامنت به تکهای از کد گفته میشود که توسط مرورگر اجرا نمیشود. از کامنت برای قراردادن توضیحات، نکات یا هر چیزی که بعدا ممکن است بدان نیاز پیدا کنید استفاده میشود. دقت کنید که کامنتگذاری نکته بسیار مهمی است و باعث شفاف و خواناتر شدن کدها میشود. نکته مهم دیگر کامنتها این است که میتوانید با کمک آنها تکهای از کد که قصد اجرای آن را ندارید نیز کامنت کنید. بدین ترتیب آن تکه کد خوانده و اجرا نمیشود.
برای قرار دادن کامنتی که یک خط باشد، کافی است در ابتدای خط علامت // قرار دهید. هر چه در آن خط و قبل زدن اینتر نوشته شود، کامنت محسوب میشود و اجرا نخواهد شد.
اگر بخواهید چند خط پشت سر هم را کامنت کنید، باید در ابتدای محلی که میخواهید کامنت شود علامت */ و در انتهای آن علامت */ قرار دهید. بدین ترتیب هر چند خطی که بین این دو علامت نوشته شود خوانده و اجرا نخواهد شد.
مثال:
کامنت یک خطی با کمک */
/* this block is commented and won't do anything */
کامنت چند خطی با کمک */
/* این بلاک کد کامنت شده است
و هیچ گونه اتفاقی
در این قسمت رخ نخواهد داد */
کامنت یک خطی با کمک //
//کامنت در یک خط
کامنت چند خطی با کمک //
//مجموعه ای از
//کامنتهای
//یک خطی
در آخر باز هم توصیه میکنیم برای خواناتر شدن کد و درک بهتر آن توسط خودتان و دیگران، حتما در بین کدهایتان کامنت بگذارید و عملکرد و نکات مبهم آن را توضیح دهید.
بلاک کد در واقع مجموعهای از جملات یک زبان برنامهنویسی است که در کنار هم، یک بلاک یا مجموعه را تشکیل میدهند. مثلا فانکشنها و کارهایی که در داخل {} یک فانکشن نوشته میشود یک بلاک کد را تشکیل میدهند.
{
StatementList
}
در مثال بالا هر چه بین دو علامت { نوشته شده است بهعنوان بلاک کد شناخته میشود.
یک مفهوم بسیار مهم دیگر در جاوا اسکریپت، مفهوم scope است. scope مشخص میکند که به متغیرها و اطلاعات یک بلاک کد، در کجا دسترسی داریم و میتوانیم استفاده کنیم. در ادامه به این موضوع بهصورت عمیقتر خواهیم پرداخت.
بهطور کلی اولین نکته این است که جاوا اسکریپت کدها را از بالا به پایین میخواند. پس نمیتوانید تکه کدی را که هنوز ننوشتهاید در پایین صفحه استفاده کنید. مثلا اگر میخواهید یک فانکشن یا هر متغیر دیگری را در صفحه صدا بزنید، باید ابتدا آن را در بالاتر تعریف کنید و در پایینتر صدا بزنید؛ نه اینکه در بالاتر صدا بزنید و در خط بعدی آن را تعریف کنید.
متغیرها در جاوا اسکریپت به دو دسته تقسیم میشوند: متغیرهای عمومی و Global. در واقع زمانی که یک متغیر را درون یک فانکشن تعریف میکنید، تفاوت بسیار زیادی دارد تا آن را بیرون یک فانکشن تعریف کنید.
زمانی که یک متغیر در خارج بلاک کد تعریف میشود، به آن متغیر عمومی میگوییم. به متغیر عمومی همه جا دسترسی داریم و میتوانیم همه جا آن را صدا بزنیم یا تغییر بدهیم.
متغیرهای محلی در داخل یک بلاک کد تعریف میشوند. در واقع زمانی که شروع و تعریف یک متغیر در داخل مثلا یک فانکشن باشد، این متغیر تنها درون آن فانکشن قابل تعریف و استفاده خواهد بود و بیرون آن نمیتوانید از آن استفاده کنید. این موضوع خصوصا زمانی که تعداد متغیرها زیاد میشود و نمیخواهید برای هر کار کوچکی یک متغیر عمومی تعریف کنید استفاده میشود.
var globalVariable;
function changeMe(){
var localVaribale = "i am local to this function";
globalVariable = "i am global varibable"
اگر localVaribale را در داخل فانکشن صدا بزنیم بدان دسترسی خواهیم داشت چون این متغیر تنها وابسته و قابل استفاده در همین فانکشن خواهد بود//
}
در این مثال زمانی که localVaribale را در داخل فانکشن تعریف کنیم، تنها درون این فانکشن بدان دسترسی داریم. پس اگر خارج فانکشن آن را صدا بزنیم دیگر نمیتوانیم آن را استفاده کنیم و ارور undefined خواهیم گرفت.
ولی متغیر عمومی globalVariable که در خارج فانکشن و بلاک کد فانکشن تعریف شده است، در داخل و بیرون فانکشن بدان دسترسی خواهیم داشت. برای تعریف یک متغیر گلوبال و عمومی، کافی است آن را خارج هر گونه بلاک کد قرار دهید تا همه جا بدان دسترسی داشته باشید.
برای مثال اگر در ادامه و خارج فانکشن بخواهیم این دو متغیر را نمایش دهیم، متغیر گلوبال درست نمایش داده خواهد شد.
alert(globalVariable) //نتیجه درست برخواهد گشت
alert(localVaribale) // این متغیر ناشناخته خواهد بود
همچنین هر بلاک کد (هر چه بین دو آکولاد نوشته میشود یک بلاک کد است) دارای اسکوپ اختصاصی خود است. یعنی اگر متغیری را درون یک فانکشن تعریف کرده باشید بیرون فانکشن نمیتوانید آن را استفاده کنید. برای استفاده و تغییر یک متغیر درون فانکشن و دسترسی به آن بیرون فانکشن باید آن را بیرون فانکشن تعریف کنید. بدین ترتیب متغیر شما گلوبال یا عمومی میشود و وقتی درون فانکشن استفاده شود مشکلی ندارد. حتی مقدار آن بعد از اجرای فانکشن نیز تغییر میکند و مشکلی از بابت تغییر آن در فانکشن نیست.
فرض کنید که ۱۰ فانکشن دارید که در هر کدام از آنها به یک متغیر جداگانه نیاز دارید که مثلا قیمت نهایی را حساب کند! اگر تمام متغیرهای قیمت نهایی را بخواهید گلوبال تعریف کنید، باید به تعداد فانکشنها متغیرهای گلوبال تعریف کنید. همچنین هر بار که فانکشن صدا زده میشود، مقدار متغیر گلوبال شما با مقدار جدید عوض میشود. اما اگر متغیر شما بهصورت محلی در داخل فانکشن تعریف شود، فقط در همان فانکشن در دسترس خواهد بود و دیگر ناچار نیستید متغیرهای جداگانه برای هر فانکشن تعریف شود. همچنین از عدم تداخل متغیرها و قاطی شدن مقدارها در فانکشنهای مختلف نیز خیالتان راحت خواهد بود.