omid
7 سال پیش توسط omid مطرح شد
5 پاسخ

تفاوت let و var

سلام راجب تفاوت این دو میخاستم بدونم . سرچ کردم ولی انگلیسیم در حدی نبود بتونم کامل جواب سوال رو پیدا کنم .
و اینکه بهترین روش اعلام متغیر ها چیه!
یعنی اول اعلان کنیم بعد استفاده یا در حال استفاده و موقع نیاز در هر جایی که شد اعلان کنیم ؟


ثبت پرسش جدید
طاها تقدس
تخصص : طراح رابط و تجربه کاربری
@ttaghaddos 7 سال پیش مطرح شد
1

بهترین و جدیدترین روشش استفاده از const و let هست، بیشترین تفاوت let و var هم توی global بودن یا نبودن در بعضی موارد مثل حلقه‌هاست. دوره ES6 که توی سایت هست کامل توضیح داده شده این‌ها.


محمد امیر محمدی
تخصص : برنامه نویس لاراول و ویو جی اس
@mem.amir.m 7 سال پیش مطرح شد
1
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
}

محمد امیر محمدی
تخصص : برنامه نویس لاراول و ویو جی اس
@mem.amir.m 7 سال پیش مطرح شد
1

به این مثال خوب دقت کنید جوابشو میگیرید


ALVIN
تخصص : برنامه نویس
@ALVIIN 3 سال پیش مطرح شد
1

سلام var دیگه خیلی کم استفاده میشه و این روزا از let , const استفاده میکنند ولی تفاوت این دو در دسترسی به آنهاست با var میتونیم در خارج از بلاک هم به اون دسترسی پیدا کنیم که این اشتباست و با let این مشکل حل میشود و دیگه نمیتونیم به اون در خارج از بلاک {} دسترسی پیدا کنیم .


فریبرز شالقونی پور
تخصص : طراح و برنامه نویس حوضه وب
@fariborz0015 3 سال پیش مطرح شد
1

تفاوت 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 

البته کانست هایی که پروتایپشون ابجکت باشه یه سری تغییرات جزئی رو پذیرا هستن


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام