آشنایی با متغیرها و انواع داده در جاوا اسکریپت
متغیرها و انواع داده در جاوا اسکریپت، به عنوان ستونهای فقرات هر برنامه، نقش حیاتی در مدیریت و سازماندهی اطلاعات ایفا میکنند. درک عمیق این مفاهیم برای توسعهدهندگان، خصوصاً در آموزش جاوا اسکریپت، امکان کدنویسی کارآمد، منعطف و عاری از خطا را فراهم میآورد. این مقاله به بررسی جامع این مباحث میپردازد تا بنیاد محکمی برای یادگیری و کار با جاوا اسکریپت ایجاد کند.
متغیرها در جاوا اسکریپت: جعبههایی برای نگهداری اطلاعات
در دنیای برنامهنویسی، جایی که دادهها دائماً در حال تغییر و پردازش هستند، نیاز به فضایی برای ذخیرهسازی موقت اطلاعات احساس میشود. این فضا را «متغیر» مینامیم؛ نامی که به یک مکان مشخص در حافظه کامپیوتر اختصاص داده میشود تا دادهای را در خود نگه دارد و بتوان در طول برنامه به آن دسترسی پیدا کرد و مقدارش را تغییر داد. به زبان ساده، متغیرها شبیه به جعبههایی با برچسب هستند که میتوانیم اطلاعات مختلف را درون آنها قرار دهیم.
برای مثال، فرض کنید میخواهیم نام یک کاربر و سن او را ذخیره کنیم. به جای اینکه هر بار نام و سن را مستقیماً بنویسیم، میتوانیم از متغیرهایی مانند username و userAge استفاده کنیم. این رویکرد نه تنها کد را خواناتر میکند بلکه قابلیت تغییر و توسعه برنامه را نیز به شدت افزایش میدهد. استفاده صحیح از متغیرها، گام اول در مسیر آموزش مقدماتی تا پیشرفته جاوا اسکریپت است.
۱.۱. متغیر چیست؟
متغیر در جاوا اسکریپت نامی است که به یک مقدار اختصاص داده میشود و این مقدار میتواند در طول اجرای برنامه تغییر کند. جاوا اسکریپت یک زبان dynamically typed (پویا نوع) است، به این معنی که نیازی نیست نوع دادهای را که یک متغیر قرار است نگه دارد، از قبل مشخص کنیم. مفسر جاوا اسکریپت به صورت خودکار نوع داده را بر اساس مقداری که به متغیر اختصاص داده میشود، تشخیص میدهد.
مثالی از تعریف و مقداردهی اولیه یک متغیر:
let message = “سلام به دنیای جاوا اسکریپت!”; let age = 30; let isActive = true;
در این مثال، message یک رشته، age یک عدد و isActive یک مقدار منطقی (Boolean) را ذخیره میکنند. این سادگی در تعریف متغیرها یکی از ویژگیهای جذاب آموزش JavaScript است.
۱.۲. کلمات کلیدی تعریف متغیر: var، let، const
در جاوا اسکریپت، سه کلمه کلیدی اصلی برای تعریف متغیرها وجود دارد: var، let و const. هر یک از این کلمات کلیدی، رفتارها و قواعد خاص خود را در مورد دامنه (Scope)، قابلیت تغییر مقدار و قابلیت اعلان مجدد متغیر دارند که درک آنها برای نوشتن کدهای بهینه و بدون خطا ضروری است.
۱.۲.۱. var: روش سنتی (و با ملاحظات!)
var قدیمیترین کلمه کلیدی برای تعریف متغیرها در جاوا اسکریپت است که از ابتدای این زبان وجود داشته است. متغیرهایی که با var تعریف میشوند، دارای “دامنه تابعی” (Function Scope) هستند. این بدان معناست که اگر متغیری با var درون یک تابع تعریف شود، فقط در همان تابع قابل دسترسی است، اما اگر خارج از هر تابعی تعریف شود، دارای دامنه سراسری (Global Scope) خواهد بود.
یکی از ویژگیهای مهم var، مفهوم “Hoisting” است. Hoisting به این معنی است که اعلان متغیر (نه مقداردهی اولیه آن) به بالای دامنه خود منتقل میشود. این رفتار میتواند منجر به خطاهایی شود که پیشبینی آنها دشوار است. برای مثال:
console.log(myVar); // undefined (چون myVar hoist شده ولی مقداردهی نشده) var myVar = 10; console.log(myVar); // 10
همچنین، متغیرهای var را میتوان چندین بار در یک دامنه اعلان مجدد (Re-declaration) و مقداردهی مجدد (Re-assignment) کرد:
var greeting = “سلام”; var greeting = “درود”; // Re-declaration مجاز است greeting = “صبح بخیر”; // Re-assignment مجاز است console.log(greeting); // صبح بخیر
با توجه به این ویژگیها، استفاده از var در کدهای مدرن جاوا اسکریپت کمتر توصیه میشود و let و const جایگزینهای بهتری به شمار میآیند.
۱.۲.۲. let: رویکرد مدرن برای متغیرها
let در ES6 (ECMAScript 2015) معرفی شد تا مشکلات var را برطرف کند. متغیرهایی که با let تعریف میشوند، دارای “دامنه بلاکی” (Block Scope) هستند. این یعنی متغیر تنها در بلوک کدی که در آن تعریف شده (مانند درون یک if، for، یا یک جفت آکولاد {}) قابل دسترسی است و خارج از آن بلوک نامشخص خواهد بود.
let نیز مانند var دارای Hoisting است، اما در یک “Temporal Dead Zone” (TDZ) قرار میگیرد. این بدان معناست که نمیتوان به متغیر let قبل از اعلان آن دسترسی داشت و در صورت تلاش، خطای ReferenceError رخ میدهد. این ویژگی به جلوگیری از خطاهای ناخواسته کمک میکند:
// console.log(myLet); // ReferenceError: Cannot access ‘myLet’ before initialization let myLet = 20; console.log(myLet); // 20
متغیرهای let را نمیتوان در یک دامنه اعلان مجدد کرد، اما میتوان مقدار آنها را مجدداً تغییر داد (Re-assignment):
let userName = “علی”; // let userName = “رضا”; // SyntaxError: ‘userName’ has already been declared userName = “رضا”; // Re-assignment مجاز است console.log(userName); // رضا
این ویژگیها let را به گزینهای امنتر و قابل پیشبینیتر برای تعریف متغیرهای قابل تغییر تبدیل کردهاند و به همین دلیل استفاده از let در دوره آموزش جاوا اسکریپت مدرن بسیار رایج است.
۱.۲.۳. const: متغیرهای ثابت (Constants)
const نیز همزمان با let در ES6 معرفی شد و برای تعریف متغیرهایی استفاده میشود که مقدار آنها پس از تخصیص اولیه، قرار نیست تغییر کند. متغیرهای const نیز مانند let دارای “دامنه بلاکی” و “Temporal Dead Zone” هستند و نمیتوان آنها را قبل از اعلان استفاده کرد. مهمترین نکته در مورد const این است که باید بلافاصله هنگام تعریف، مقداردهی اولیه شود.
// const PI; // SyntaxError: Missing initializer in const declaration const PI = 3.14; // PI = 3.14159; // TypeError: Assignment to constant variable. console.log(PI); // 3.14
نمیتوان متغیرهای const را اعلان مجدد یا مقداردهی مجدد کرد. اما یک نکته بسیار مهم وجود دارد: برای انواع داده Primitive (مانند عدد، رشته، boolean)، const تضمین میکند که مقدار متغیر تغییر نمیکند. اما برای انواع داده Reference (مانند آرایهها و آبجکتها)، const تنها تضمین میکند که مرجع به آن شیء تغییر نمیکند، نه محتوای درون شیء. به عبارت دیگر، میتوان خصوصیات یک آبجکت یا عناصر یک آرایه تعریف شده با const را تغییر داد:
const user = { name: “سارا”, age: 25 }; user.age = 26; // مجاز است، محتوای آبجکت تغییر کرده، نه مرجع آن console.log(user); // { name: “سارا”, age: 26 } // user = { name: “مریم”, age: 30 }; // TypeError: Assignment to constant variable. (تغییر مرجع غیرمجاز است)
در بهترین دوره آموزش جاوا اسکریپت همواره بر این نکته تأکید میشود که const برای مقادیری که ثابت باقی میمانند، ایدهآل است.
۱.۲.۴. مقایسه جامع var، let، const
درک تفاوتهای این سه کلمه کلیدی، یکی از مهارتهای کلیدی در آموزش javascript پروژه محور است. جدول زیر مقایسهای جامع از ویژگیهای آنها را ارائه میدهد:
| ویژگی | var | let | const |
|---|---|---|---|
| دامنه (Scope) | تابع (Function Scope) | بلوک (Block Scope) | بلوک (Block Scope) |
| Hoisting | بله (با مقدار undefined) | بله (در TDZ) | بله (در TDZ) |
| اعلان مجدد (Re-declaration) | مجاز | غیرمجاز | غیرمجاز |
| مقداردهی مجدد (Re-assignment) | مجاز | مجاز | غیرمجاز (برای Primitive ها) |
| الزام مقدار اولیه | ندارد | ندارد | بله |
۱.۳. قوانین و بهترین روشهای نامگذاری متغیرها در جاوا اسکریپت
نامگذاری صحیح متغیرها، نه تنها به خوانایی و نگهداری کد کمک میکند، بلکه از بروز خطاهای احتمالی نیز جلوگیری مینماید. در جاوا اسکریپت، برای نامگذاری متغیرها قوانینی وجود دارد که باید رعایت شوند:
- نام متغیر باید با یک حرف (A-Z یا a-z)، یک آندرسکور (_) یا یک علامت دلار ($) شروع شود.
- نام متغیر نمیتواند با یک عدد شروع شود.
- نام متغیر فقط میتواند شامل حروف، اعداد، آندرسکور و علامت دلار باشد (کاراکترهای خاص دیگر مانند @، #، – و … مجاز نیستند).
- نام متغیر نمیتواند یکی از “کلمات رزرو شده” (Reserved Keywords) جاوا اسکریپت باشد.
- جاوا اسکریپت به بزرگی و کوچکی حروف حساس است (myVar با myvar متفاوت است).
برخی از کلمات رزرو شده که نمیتوانید از آنها به عنوان نام متغیر استفاده کنید، عبارتند از: break، case، catch، class، const، continue، debugger، default، delete، do، else، export، extends، false، finally، for، function، if، import، in، instanceof، new، null، return، super، switch، this، throw، true، try، typeof، var، void، while، with، yield.
علاوه بر قوانین الزامی، بهترین روشها و قراردادهایی نیز برای نامگذاری وجود دارد که اکثر توسعهدهندگان آنها را رعایت میکنند تا کدشان خواناتر باشد:
- Camel Case (شترنگاری): رایجترین قرارداد در جاوا اسکریپت. حرف اول کلمه اول کوچک و حرف اول کلمات بعدی بزرگ نوشته میشود (مثال: firstName، totalItemsInCart).
- خوانایی و توصیفی بودن: نام متغیر باید به وضوح هدف خود را مشخص کند (مثال: age به جای a، customerName به جای cn).
نامگذاری مناسب متغیرها در جاوا اسکریپت، نه تنها به بهبود خوانایی کد کمک میکند، بلکه از بروز خطاهای رایج جلوگیری کرده و توسعه و نگهداری پروژهها را سادهتر میسازد. در مجتمع فنی تهران، این نکات به صورت کاربردی و پروژه محور آموزش داده میشوند.
۲. انواع داده در جاوا اسکریپت: ماهیت اطلاعات شما
درک انواع داده در جاوا اسکریپت، به اندازه درک متغیرها اهمیت دارد. نوع داده، مشخص میکند که چه نوع مقداری را میتوان در یک متغیر ذخیره کرد و چه عملیاتی را میتوان روی آن انجام داد. جاوا اسکریپت از انواع داده مختلفی پشتیبانی میکند که به دو دسته اصلی Primitive (اولیه) و Non-Primitive (غیر اولیه) تقسیم میشوند.
۲.۱. جاوا اسکریپت: یک زبان Dynamically Typed (نوعگذاری پویا)
همانطور که قبلاً اشاره شد، جاوا اسکریپت یک زبان “Dynamically Typed” است. این یعنی نیازی نیست نوع داده یک متغیر را هنگام تعریف آن مشخص کنیم. نوع داده متغیر در زمان اجرا بر اساس مقداری که به آن اختصاص داده میشود، تعیین میشود و حتی میتواند در طول زمان تغییر کند.
let data = 10; // data از نوع Number console.log(typeof data); // “number” data = “Hello World”; // data به نوع String تغییر کرد console.log(typeof data); // “string” data = true; // data به نوع Boolean تغییر کرد console.log(typeof data); // “boolean”
این انعطافپذیری یکی از ویژگیهای قدرتمند جاوا اسکریپت است که البته اگر به درستی مدیریت نشود، میتواند منجر به خطاهای غیرمنتظرهای شود.
۲.۲. انواع داده Primitive (اولیه/بنیادی)
انواع داده Primitive، مقادیر ساده و غیر قابل تغییر را ذخیره میکنند. این مقادیر مستقیماً در متغیر ذخیره میشوند. هفت نوع داده Primitive در جاوا اسکریپت وجود دارد:
۲.۲.۱. String (رشته):
رشتهها برای ذخیره متن استفاده میشوند. آنها را میتوان با استفاده از نقل قولهای تکی (‘ ‘)، دوتایی (” “) یا بکتیک (` `) تعریف کرد.
- نقل قول تکی و دوتایی: عملکرد یکسانی دارند. let name = ‘وحید’; let city = “تهران”;
- بکتیک (Template Literals): از ES6 به بعد معرفی شدند و قابلیتهای بیشتری مانند درونیابی (Interpolation) متغیرها و عبارات، و ایجاد رشتههای چندخطی را فراهم میکنند. let user = “مهران”; let greeting = `سلام، ${user}! خوش آمدید.`; console.log(greeting); // سلام، مهران! خوش آمدید.
۲.۲.۲. Number (عدد):
این نوع داده برای ذخیره اعداد صحیح (Integer) و اعشاری (Float) استفاده میشود. جاوا اسکریپت اعداد را به صورت ممیز شناور ۶۴ بیتی ذخیره میکند.
let integerNum = 100; let floatNum = 3.14; let scientificNum = 1.23e5; // 1.23 10^5 = 123000
سه مقدار خاص نیز در نوع Number وجود دارند:
- Infinity: نشاندهنده بینهایت مثبت (مثال: 1/0).
- -Infinity: نشاندهنده بینهایت منفی (مثال: -1/0).
- NaN (Not a Number): نشاندهنده یک عملیات ریاضی نامعتبر (مثال: “hello” / 2). این یک مقدار عددی است که نماینده چیزی “غیرعددی” است.
۲.۲.۳. BigInt (اعداد بزرگ صحیح):
نوع Number در جاوا اسکریپت محدودیت دقت دارد و نمیتواند اعداد صحیح بزرگتر از 2^53 – 1 یا کوچکتر از -(2^53 – 1) را به درستی نمایش دهد. برای حل این مشکل، BigInt در ES2020 معرفی شد. برای تعریف یک BigInt، کافی است حرف n را به انتهای یک عدد صحیح اضافه کنید.
let largeNum = 9007199254740991n; // یک BigInt let anotherLargeNum = largeNum + 1n; console.log(anotherLargeNum); // 9007199254740992n
نمیتوان BigInt را با Number در عملیات ریاضی ترکیب کرد؛ این کار منجر به خطا میشود، مگر اینکه صریحاً یکی به دیگری تبدیل شود.
۲.۲.۴. Boolean (منطقی):
این نوع داده تنها دو مقدار true (درست) یا false (نادرست) را میپذیرد و در منطق شرطی و کنترل جریان برنامه بسیار کاربردی است.
let isLoggedIn = true; let hasPermission = false;
۲.۲.۵. Undefined (تعریفنشده):
undefined نشاندهنده این است که یک متغیر اعلان شده، اما هیچ مقداری به آن اختصاص داده نشده است. این مقدار به صورت خودکار توسط جاوا اسکریپت به متغیرهای بدون مقدار اولیه اختصاص داده میشود.
let myVariable; console.log(myVariable); // undefined
۲.۲.۶. Null (هیچ/خالی):
null یک مقدار خاص است که نشاندهنده عدم وجود عمدی یک شیء یا مقدار “خالی” است. برخلاف undefined که به صورت خودکار تخصیص مییابد، null معمولاً توسط برنامهنویس برای نشان دادن اینکه متغیری عمداً هیچ مقداری ندارد، تخصیص داده میشود.
let emptyValue = null; console.log(emptyValue); // null
نکته مهم: null و undefined از نظر مقدار متفاوت هستند (null == undefined در مقایسه سست true است، اما null === undefined در مقایسه دقیق false است)، اما هر دو نشاندهنده عدم وجود یک مقدار هستند.
۲.۲.۷. Symbol (نماد):
Symbol که در ES6 معرفی شد، یک نوع داده Primitive منحصر به فرد و تغییرناپذیر است. هر بار که یک Symbol ایجاد میشود، حتی با توضیحات یکسان، یک مقدار منحصر به فرد جدید تولید میکند. کاربرد اصلی Symbolها در ایجاد کلیدهای منحصر به فرد برای خصوصیات آبجکتها است تا از تداخل نامها جلوگیری شود.
const id1 = Symbol(‘id’); const id2 = Symbol(‘id’); console.log(id1 === id2); // false
۲.۳. نوع داده Non-Primitive (غیر اولیه): Object
برخلاف Primitiveها که یک مقدار واحد را ذخیره میکنند، انواع داده Non-Primitive میتوانند مجموعهای از دادههای پیچیده را ذخیره کنند. Object اصلیترین نوع داده Non-Primitive است و به عنوان یک ساختار داده برای ذخیره مجموعهای از جفتهای کلید-مقدار (Properties) استفاده میشود.
let person = { firstName: “رضا”, lastName: “کریمی”, age: 30, isStudent: false };
آرایهها (Arrays) و توابع (Functions) نیز در جاوا اسکریپت در واقع انواع خاصی از Object هستند. آرایهها برای ذخیره مجموعهای از مقادیر مرتب شده و توابع برای کدهای قابل اجرا استفاده میشوند.
let colors = [“قرمز”, “آبی”, “سبز”]; // آرایه function sayHello() { console.log(“سلام!”); } // تابع
۲.۴. بررسی نوع داده با عملگر typeof
عملگر typeof برای بررسی نوع داده یک متغیر یا یک مقدار استفاده میشود. این عملگر یک رشته را برمیگرداند که نوع داده را توصیف میکند.
console.log(typeof “سلام”); // “string” console.log(typeof 123); // “number” console.log(typeof true); // “boolean” console.log(typeof undefined); // “undefined” console.log(typeof Symbol(‘foo’)); // “symbol” console.log(typeof {name: “Jack”}); // “object” console.log(typeof [1, 2, 3]); // “object” console.log(typeof function() {}); // “function”
نکته مهم و “باگ تاریخی”: عملگر typeof برای مقدار null، رشته “object” را برمیگرداند. این یک خطای قدیمی در طراحی جاوا اسکریپت است و نشاندهنده این نیست که null یک Object است؛ null یک نوع داده Primitive است.
console.log(typeof null); // “object” (این یک ویژگی تاریخی و یک باگ شناخته شده است)
۳. تبدیل انواع داده (Type Conversion / Coercion)
گاهی اوقات در برنامهنویسی جاوا اسکریپت، نیاز است که یک نوع داده به نوع دیگری تبدیل شود. این فرآیند میتواند به صورت صریح (توسط برنامهنویس) یا ضمنی (توسط خود جاوا اسکریپت) اتفاق بیفتد. درک این تبدیلات برای جلوگیری از خطاهای منطقی و نوشتن کدهای قابل پیشبینی، بسیار حیاتی است. این مبحث در آموزش javascript پروژه محور اهمیت ویژهای دارد.
۳.۱. تبدیل صریح (Explicit Conversion): به دست شما
تبدیل صریح، زمانی اتفاق میافتد که برنامهنویس با استفاده از توابع و متدهای خاص، یک نوع داده را عمداً به نوع دیگری تغییر میدهد.
۳.۱.۱. تبدیل به Number:
برای تبدیل مقادیر دیگر به عدد، متدهای مختلفی وجود دارد:
- Number(): این تابع، هر نوع دادهای را به عدد تبدیل میکند. اگر مقدار قابل تبدیل به عدد نباشد، NaN برمیگرداند. console.log(Number(“123”)); // 123 console.log(Number(“123.45”)); // 123.45 console.log(Number(“hello”)); // NaN console.log(Number(true)); // 1 console.log(Number(false)); // 0 console.log(Number(null)); // 0 console.log(Number(undefined)); // NaN
- parseInt(): این تابع رشته را تجزیه کرده و قسمت عدد صحیح آن را برمیگرداند. اگر رشته با عدد شروع نشود، NaN میدهد. console.log(parseInt(“100px”)); // 100 console.log(parseInt(“10.5”)); // 10 console.log(parseInt(“px100”)); // NaN
- parseFloat(): مشابه parseInt()، اما اعداد اعشاری را نیز استخراج میکند. console.log(parseFloat(“10.5px”)); // 10.5 console.log(parseFloat(“100”)); // 100
در آموزش مقدماتی تا پیشرفته جاوا اسکریپت، تاکید میشود که تفاوتهای Number()، parseInt() و parseFloat() را به خوبی درک کنید.
۳.۱.۲. تبدیل به String:
برای تبدیل سایر انواع داده به رشته، میتوان از متدهای زیر استفاده کرد:
- String(): این تابع هر مقداری را به رشته تبدیل میکند. console.log(String(123)); // “123” console.log(String(true)); // “true” console.log(String(null)); // “null” console.log(String(undefined)); // “undefined”
- .toString(): متدی است که بر روی بیشتر انواع داده (به جز null و undefined که باعث خطا میشوند) قابل فراخوانی است. let num = 123; console.log(num.toString()); // “123” let bool = true; console.log(bool.toString()); // “true” // null.toString(); // TypeError
۳.۱.۳. تبدیل به Boolean:
برای تبدیل هر مقداری به Boolean، از تابع Boolean() استفاده میشود. در این تبدیل، مفاهیم “Falsy” و “Truthy” اهمیت پیدا میکنند. مقادیر Falsy (که به false تبدیل میشوند) عبارتند از:
- false
- 0 (عدد صفر)
- -0 (منفی صفر)
- “” (رشته خالی)
- null
- undefined
- NaN
هر مقدار دیگری غیر از موارد بالا، “Truthy” (که به true تبدیل میشوند) محسوب میشود.
console.log(Boolean(0)); // false console.log(Boolean(“”)); // false console.log(Boolean(null)); // false console.log(Boolean(undefined)); // false console.log(Boolean(NaN)); // false console.log(Boolean(1)); // true console.log(Boolean(“hello”)); // true console.log(Boolean({})); // true (آبجکت خالی هم Truthy است)
۳.۲. تبدیل ضمنی (Implicit Conversion / Type Coercion): به دست جاوا اسکریپت
تبدیل ضمنی زمانی رخ میدهد که جاوا اسکریپت به صورت خودکار، در حین اجرای عملیاتها و مقایسهها، انواع داده را تبدیل میکند. این رفتار میتواند گاهی اوقات غیرمنتظره باشد، بنابراین درک آن ضروری است.
- با عملگر جمع (+): اگر یکی از عملوندها رشته باشد، عملگر + عمل “الحاق رشته” (String Concatenation) را انجام میدهد و عملوند دیگر را نیز به رشته تبدیل میکند. console.log(“5” + 2); // “52” (عدد 2 به رشته “2” تبدیل شد) console.log(5 + “2”); // “52” console.log(true + “World”); // “trueWorld”
- با عملگرهای ریاضی دیگر (-، ، /): این عملگرها سعی میکنند عملوندها را به عدد تبدیل کنند. console.log(“10” – 5); // 5 (رشته “10” به عدد 10 تبدیل شد) console.log(“10” “2”); // 20 console.log(“hello” – 5); // NaN
- با عملگرهای مقایسهای (==): عملگر مقایسه سست (==) سعی میکند انواع داده را قبل از مقایسه، یکسانسازی کند. console.log(5 == “5”); // true console.log(0 == false); // true console.log(null == undefined); // true
برای جلوگیری از این تبدیلهای ضمنی و احتمالی، استفاده از عملگر مقایسه دقیق (===) که هم مقدار و هم نوع را بررسی میکند، به شدت توصیه میشود.
console.log(5 === “5”); // false console.log(0 === false); // false console.log(null === undefined); // false
در مجتمع فنی تهران، با رویکردی جامع در دوره آموزش جاوا اسکریپت، شما با تمام جزئیات و تفاوتهای این تبدیلات آشنا خواهید شد تا بتوانید کدهای مطمئن و پرفورمنس بالا بنویسید.
سوالات متداول
آیا میتوانیم بعد از تعریف، مقدار یک متغیر const را تغییر دهیم؟
برای انواع داده Primitive، خیر، مقدار const پس از تعریف قابل تغییر نیست؛ اما برای انواع Reference (مانند آرایهها و آبجکتها)، میتوان محتوای داخل شیء را تغییر داد، ولی مرجع شیء قابل تغییر نیست.
تفاوت اصلی var، let و const در دامنه (scope) و Hoisting چیست؟
var دارای دامنه تابعی (Function Scope) است و به بالای تابع منتقل میشود (Hoisting)؛ let و const دارای دامنه بلاکی (Block Scope) هستند و در Temporal Dead Zone (TDZ) قرار میگیرند، که دسترسی به آنها قبل از اعلان را غیرمجاز میکند.
چرا typeof null، رشته “object” را برمیگرداند در حالی که null یک نوع داده Primitive است؟
این یک باگ تاریخی در جاوا اسکریپت است که از زمانهای اولیه این زبان وجود داشته و علیرغم اینکه null یک نوع داده Primitive است، عملگر typeof آن را “object” نمایش میدهد.
بهترین راه برای تبدیل یک رشته عددی (مثلاً “123.45”) به یک عدد در جاوا اسکریپت کدام است؟
بستگی به نیاز دارد: برای تبدیل دقیق به هر نوع عدد، Number() مناسب است؛ برای استخراج عدد صحیح، parseInt() و برای استخراج عدد اعشاری، parseFloat() استفاده میشود.
چه زمانی باید به جای Number عادی، از نوع داده BigInt استفاده کنیم؟
زمانی که نیاز به کار با اعداد صحیح بسیار بزرگی دارید که از حد دقت استاندارد Number (یعنی 2^53 – 1) فراتر میروند، باید از BigInt استفاده کنید تا دقت اعداد حفظ شود.
آیا شما به دنبال کسب اطلاعات بیشتر در مورد "آشنایی با متغیرها و انواع داده در جاوا اسکریپت" هستید؟ با کلیک بر روی آموزش, کسب و کار ایرانی، اگر به دنبال مطالب جالب و آموزنده هستید، ممکن است در این موضوع، مطالب مفید دیگری هم وجود داشته باشد. برای کشف آن ها، به دنبال دسته بندی های مرتبط بگردید. همچنین، ممکن است در این دسته بندی، سریال ها، فیلم ها، کتاب ها و مقالات مفیدی نیز برای شما قرار داشته باشند. بنابراین، همین حالا برای کشف دنیای جذاب و گسترده ی محتواهای مرتبط با "آشنایی با متغیرها و انواع داده در جاوا اسکریپت"، کلیک کنید.





