سلام راجب تفاوت این دو میخاستم بدونم . سرچ کردم ولی انگلیسیم در حدی نبود بتونم کامل جواب سوال رو پیدا کنم .
و اینکه بهترین روش اعلام متغیر ها چیه!
یعنی اول اعلان کنیم بعد استفاده یا در حال استفاده و موقع نیاز در هر جایی که شد اعلان کنیم ؟
بهترین و جدیدترین روشش استفاده از const و let هست، بیشترین تفاوت let و var هم توی global بودن یا نبودن در بعضی موارد مثل حلقههاست. دوره ES6 که توی سایت هست کامل توضیح داده شده اینها.
function loop(arr) {
// i IS NOT known here
// j IS NOT known here
for( var i = 0; i < arr.length; i++ ) {
// i IS known here
}
// i IS known here
// j IS NOT known here
for( let j = 0; j < arr.length; j++ ) {
// j IS known here
}
// i IS known here
// j IS NOT known here
}
سلام var دیگه خیلی کم استفاده میشه و این روزا از let , const استفاده میکنند ولی تفاوت این دو در دسترسی به آنهاست با var میتونیم در خارج از بلاک هم به اون دسترسی پیدا کنیم که این اشتباست و با let این مشکل حل میشود و دیگه نمیتونیم به اون در خارج از بلاک {} دسترسی پیدا کنیم .
تفاوت var با let و کانست تو این هستش که اگر شما از var استفاده بکنید تقریبا در تمام کل یک فایل جاوا اسکریپتی میتونید اون متغییر و درخواست بدید و از مقادیرش استفاده کنید البته استثنائاهایی هم وجود داره
ولی let به این صورت نیست ، اگر شما بین دوتا اکولات {} از let استفاده کنید دیگه خارج از این اکولات ها نمیتونین به مقدار let دسترسی پیدا کنید
const هم یک نوع وریبل هست که تغیررات خاصی نمیشه توش انجام داد ولی در کل مجموعه میشه فراخوانیش کرد
به مثال زیر دقت کن
let
for(let i=0 ; i<10 ; i++){
// something to do
}
console.log(i) //undefined
//----------------------------------------------
for(var i=0 ; i<10 ; i++){
// something to do
}
console.log(i) //10
همونطور که تو مثال میبینی متغیری که توی حلقه اول توسط let تعریف شد خارج از حلقه قابل دسترس نیست
و اگر ازش خارج از حلقه لاگ بگیری undefined بر میگردونه
ولی در حلقه دوم که با Var تعریف شده بود ، متغیر خارج از حلقه قابل دسترس بود و میتونی خارج از حلقه ازش لاگ بگیری و میبینی که اخرین عددی که تو حلقه پیش رفته برات به نمایش در میاد ، ختم کلوم let خارج از اکولات {} (میتونه تابع ، کلاس ، حلقه و ... باشه ) قابل دسترس نیست اما var تقریبا قابل دسترسه و البته let بهتره چون تکرار نام ها اذیتمون نمیکنه
و در اخر const هم که کلا متغیر نیست یک ثابت هست یعنی قابل تغییر نیست
و
البته یک ثابت واقعی نیست و استثنائاهایی هم وجود داره
به مثال زیر دقت کن
const PI = 3.141592653589793;
PI = 3.14; // This will give an error
PI = PI + 10; // This will also give an error
var x = 10;
// Here x is 10
{
const x = 2;
// Here x is 2
}
// Here x is 10
البته کانست هایی که پروتایپشون ابجکت باشه یه سری تغییرات جزئی رو پذیرا هستن
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟