ویرگول
ورودثبت نام
هومن امینی
هومن امینیبرای یادداشت اینجا می نویسم اگر بدرد کسی هم خورد تو روحم گل باز میشه - مهندس نرم افزار - توسعه دهنده وب در فناپ
هومن امینی
هومن امینی
خواندن ۵ دقیقه·۶ سال پیش

مفاهیم، نکته و ترفندهای جی اس - قسمت ۲ متغیرها


ویدیو این گفتار را در لینک های زیر می توانید، مشاهده بفرمایید.
یوتیوب
آپارات

اساسی ترین واحد اطلاعات در یک برنامه یک مقدار یا value است. مقادیر داده هستند. آنها چگونگی نگهداری state برنامه هستند. مقادیر در جی اس به دو شکل هستند:

  • اولیه (primitive)
  • شیء (object)

تعریف متغیرها

متغیرها ظروف مقادیر هستند و فرق بین جاوااسکریپت و سایر زبان های برنامه نویسی این است که در جاوا اسکریپت ما نوع متغیر و یا type آن را هنگام تعریف متغیر مشخص نمی‌نماییم مانند مثال زیر که ما یک متغیر تعریف نمودیم و مقدار آن را ۱۰۰ قرار دادیم و نوع متغیر را هنگام تعریف آن تعیین ننمودیم.

var value; var value =100

به این دو مرحله اعلان متغیر یا deceleration و بعد تعریف متغیر یا definition می گویند

var value; //deceleration now undefined value = 100: //definition now number

در جاوا اسکریپت دو نوع Type کلی به نام های Primitive و Reference برای متغیرها داریم

و متغیر های اولیه و یا Primitive در es5 به شرح ذیل هستند.

  • Number // Integer or Float
  • String
  • Boolean //True of False
  • undefined
  • null
در es6 جاوااسکریپت یک نوع متغیر primitive دیگر دارد بنام Symbol که اینجا درباره جزییات آن فعلا صحبت نمی کنیم.

در جاوااسکریپت می توانیم در هر زمان نوع متغیر را مانند مثال زیر عوض کنیم و خطایی هم مانند سایر زبان های برنامه نویسی دریافت نکنیم، لذا در جاوا اسکریپت اصطلاحأ می گوییم lose typing یا week typing داریم و در هر لحظه می توانیم به عنوان مثال به یک متغیر number یک string تخصیص بدهیم.

var a =10 //Number console.log(a) a = &quotHello&quot //Convert To String console.log(a)


خصیصه مشترک بین نوع متغیر primitive این است که غیر قابل تغییر است یا immutable هستند یعنی نمی توانیم آن ها را در حافظه تغییر بدهیم مثال ذیل:

var value; value = &quothello&quot //hello value.toUpperCase(); console.log(value); //hello

اما توجه کنید که ما نمی توانیم متغیر های Primitive را در حافظه تغییر بدهیم اما می توانیم به آنها مجدد مقدار تخصیص بدهیم مثال ذیل :

var value; value = &quothello&quot //hello value = value.toUpperCase(); console.log(value); //HELLO

به متغیر های Primitive در حافظه فضای جداگانه تخصیص داده می شود و اگر دو متغیر را مساوی قرار دهیم و یکی از آنها را تغییر دهیم بر دیگری اثر ندارد مثال زیر:

var value1; value1 = &quothello&quot
var value2; value2 = value1; console.log(value2) //hello
value2= &quottest&quot console.log(value2) //test console.log(value1) //hello


توجه : نوع متغیر دیگری که در جاوا اسکریپت داریم متغیر های reference هستند مانند object که آنها قابل تغییر هستند و از نظر حافظه اگر دو متغیر آنها را مساوی قرار دهیم به یک مکان اشاره دارند که درقسمت بعدی به تفضیل درباره آنها صحبت خواهیم کرد

نوع متغیر undefined :

وقتی در جاوااسکریپت متغیر تعریف می‌شود و اما تخصیصی به آن صورت نگرفته باشد، undefined به صورت پیش فرض به آن تخصیص می‌یابد.

var a //undefined

نوع دیگر متغیر که داریم null است

var value; value=null; console.log(value); //null

فرق بین undefined و null :

همانطور که از اسم undefined مشخص است، یعنی متغیر تعریف شده اما مقداری به ان تخصیص پیدا ننموده اما null یعنی متغیر تعریف شده و به آن null یا بدون مقادر یا خالی تخصیص داده شده مثلا شما یک فرمی دارید که در اسم و اسم وسط و فامیلی در آن وجود دارد و اگر کاربر اسم وسط خود را وارد ننموده باشد بهتر است به آن null تخصیص بدهیم تا undefined.


درباره محدوده و یا Scope متغیر ها در قسمت های بعدی به تفضیل درباره آنها صحبت خواهیم کرد.

تو زبان های برنامه نویسی دیگر مانند C و یا جاوا نوع متغیر از موقع تعریف مشخص است اما از آنجاییکه

همانطور که عرض شد، در جاوا اسکریپت تعریف و تخصیص متغیر جداگانه انجام می گردد شما می توانید نوع متغیر را هر لحظه با اپراتور typeof مشخص نمایید.

var value = 10; console.log(typeof(value)); //number typepf null //object Note : it is javascript bug :(

مطلب دیگر که در متغیر وجود دارد type coercion و یا تغییر اتوماتیک است به عنوان مثال اگر شما یک number را به یک string به شکل زیر متصل کنید نتیجه string می شود

var value1 = 123; var value2 =&quot4&quot console.log(value1+value2) //&quot1234&quot

این مطلب ممکن است در شرط ها مشکل ساز شود به مثال زیر توجه کنید با وجود اینکه متغیر اول number است و متغیر دوم string شرط برقرار می گردد و same در کنسول چاپ می گردد

var value1 = 4; var value2 =&quot4&quot console.log(value1+value2) //&quot1234&quot if(value1 == value2){ console.log(&quotsame&quot) //same } else{ console.log(&quotnot same&quot) }

برای رفع این مشکل باید از اپراتور === استفاده نماییم که علاوه بر مقدار type را هم درشرط چک نماید.

var value1 = 4; var value2 =&quot4&quot console.log(value1+value2) //&quot1234&quot if(value1 === value2){ console.log(&quotsame&quot) } else{ console.log(&quotnot same&quot) //not same }

آخرین مطلبی که از متغیر ها می توانیم استفاده کنیم این است که از آنها می توانیم به عنوان boolean در شرط ها به صورت زیر استفاد کنیم.

اگر عدد مثبت باشد شرط true است

اگر منفی باشد شرط true است

اگر صفر باشد شرط false است

اگر string خالی باشد شرط false است

اگر string خالی نباشد شرط true است

اگر undefined و null باشد شرط false است

https://virgool.io/@amini.hooman/%D9%82%D8%B3%D9%85%D8%AA-%D8%A7%D9%88%D9%84-%D9%85%D9%81%D8%A7%D9%87%DB%8C%D9%85-%D9%86%DA%A9%D8%AA%D9%87-%D9%88-%D8%AA%D8%B1%D9%81%D9%86%D8%AF%D9%87%D8%A7%DB%8C-%D8%AC%D8%A7%D9%88%D8%A7%D8%A7%D8%B3%DA%A9%D8%B1%DB%8C%D9%BE%D8%AA-o3mcfglskftl
https://youtu.be/9yzZlS8i2RU
https://youtu.be/LIaDL8-1mzY


https://aparat.com/v/i4h8S






جاوااسکریپتفرانت اندبرنامه نویسی وبjavascriptreactjs
۹
۰
هومن امینی
هومن امینی
برای یادداشت اینجا می نویسم اگر بدرد کسی هم خورد تو روحم گل باز میشه - مهندس نرم افزار - توسعه دهنده وب در فناپ
شاید از این پست‌ها خوشتان بیاید