Let JavaScript

ECMAScript 2015

ECMAScript 2015 دو کلمه کلیدی مهم جدید به JavaScript اضافه کرده است:لیٹ و const.

این دو کلمه کلیدی در JavaScript محدوده بلوک را (Block Scope) متغیرها (و متغیرهای ثابت).

قبل از ES2015، JavaScript فقط دو نوع محدوده داشت:محدوده globalومحدوده function.

محدوده global

گлобالمتغیرهایی که در خارج (توابع) تعریف شده‌اندمحدوده global.

مثال

var carName = "porsche";
// کد اینجا می‌تواند از carName استفاده کند
function myFunction() {
  // کد اینجا نیز می‌تواند از carName استفاده کند
}

عیناً کوشش کریں

گлобالمتغیرها می‌توانند در هر جایی از برنامه JavaScript دسترسی پیدا کنند.

محدوده function

محلیمتغیرهایی که در داخل (توابع) تعریف شده‌اندمحدوده function.

مثال

// کد اینجا نمی‌تواند از carName استفاده کند
function myFunction() {
  ور جی carName = "porsche";
  // کد اینجا CAN از carName استفاده کند
}
// کد اینجا نمی‌تواند از carName استفاده کند

عیناً کوشش کریں

محلیمتغیرها فقط می‌توانند در داخل تابعی که در آن تعریف شده‌اند دسترسی پیدا کنند.

محدوده بلوک JavaScript

ذیلی طور پر ور جی متغیرهای تعریف شده با استفاده از کلمات کلیدیمحدوده.

در بلوک {} متغیرهای تعریف شده در داخل می‌توانند از بیرون بلوک دسترسی پیدا کنند.

مثال

{ 
  var x = 10; 
}
// در اینجا می‌توان از x استفاده کرد

قبل از ES2015، JavaScript بدون محدوده بلوک بود.

می‌توان از لیٹ کلمات کلیدی تعریف متغیرهای دارای محدوده بلوک را دارند.

در بلوک {} متغیرهای تعریف شده در داخل نمی‌توانند از بیرون بلوک دسترسی پیدا کنند:

مثال

{ 
  let x = 10;
}
// در اینجا نمی‌توان از x استفاده کرد

دوباره تعریف متغیر

استفاده از ور جی کلمات کلیدی دوباره تعریف متغیر می‌تواند مشکلی ایجاد کند.

دوباره تعریف متغیر در بلوک باعث تعریف مجدد متغیرهای بلوک خارجی نیز می‌شود:

مثال

var x = 10;
// در اینجا x برابر با 10 است
{ 
  var x = 6;
  // در اینجا x برابر با 6 است
}
// در اینجا x برابر با 6 است

عیناً کوشش کریں

استفاده از لیٹ کلمات کلیدی دوباره تعریف متغیر می‌تواند این مشکل را حل کند.

دوباره تعریف متغیر در بلوک باعث تعریف مجدد متغیرهای بلوک خارجی نمی‌شود:

مثال

var x = 10;
// در اینجا x برابر با 10 است
{ 
  let x = 6;
  // در اینجا x برابر با 6 است
}
// در اینجا x برابر با 10 است

عیناً کوشش کریں

پشتیبانی مرورگر

Internet Explorer 11 یا نسخه‌های قدیمی‌تر آن به طور کامل پشتیبانی نمی‌کند لیٹ کلمات کلیدی را.

جدول زیر تعریف می‌کند که اولین نسخه کامل لیٹ کلمات کلیدی نسخه مرورگر:

Chrome 49 IE / Edge 12 Firefox 44 Safari 11 Opera 36
مارس 2016 جولای 2015 ژانویه 2015 سپتامبر 2017 مارس 2016

محدوده حلقه

در حلقه استفاده می‌شود ور جی:

مثال

var i = 7;
for (var i = 0; i < 10; i++) {
  // چندین دستور
}
// در اینجا i برابر 10 است

عیناً کوشش کریں

در حلقه استفاده می‌شود لیٹ:

مثال

let i = 7;
for (let i = 0; i < 10; i++) {
  // چندین دستور
}
// در اینجا i برابر 7 است

عیناً کوشش کریں

در مثال اول، متغیرهایی که در حلقه استفاده می‌شوند با ور جی متغیرهای خارج از حلقه را دوباره اعلام کرده‌اید.

در مثال دوم، متغیرهایی که در حلقه استفاده می‌شوند با لیٹ متغیرهای خارج از حلقه را دوباره اعلام نکرده‌اید.

اگر در حلقه از لیٹ اگر متغیر i را اعلام کنید، فقط در داخل حلقه، متغیر i قابل مشاهده است.

محدوده function

در زمان اعلام متغیر در داخل تابع از ور جی و لیٹ مثل هم هستند.

آنها همهمحدوده function:

function myFunction() {
  var carName = "porsche";   // محدوده function
}
function myFunction() {
  let carName = "porsche";   // محدوده function
}

محدوده global

اگر در خارج از بلوک اعلام شود، ور جی و لیٹ مثل هم هستند.

آنها همهمحدوده global:

var x = 10;       // محدوده global
let y = 6;       // محدوده global

متغیرهای global در HTML

در استفاده از JavaScript، محدوده全局 محیط JavaScript است.

در HTML، محدوده全局 است شیء window.

ذیلی طور پر ور جی متغیرهای تعریف شده با کلمات کلیدی متعلق به شیء window هستند:

مثال

var carName = "porsche";
// کد در اینجا می‌تواند از window.carName استفاده کند

عیناً کوشش کریں

ذیلی طور پر لیٹ متغیرهای تعریف شده با کلمات کلیدی متعلق به شیء window نیستند:

مثال

let carName = "porsche";
// کد در اینجا نمی‌تواند از window.carName استفاده کند

عیناً کوشش کریں

اعادة تسمیه

مجاز است که در هر مکان از برنامه استفاده شود ور جی اعادة تسمية متغيرات جافااسکریپت:

مثال

var x = 10;
// الآن، x برابر 10 است
var x = 6;
// الآن، x برابر 6 است

عیناً کوشش کریں

ایک مرتبہ کے اثر زون یا اسی بلک میں، ذیلی طور پر لیٹ ایک ور جی متغیر نہیں اجازت دیا جاتا:

مثال

var x = 10;       // مجاز
let x = 6;       // نا معقول
{
  var x = 10;   // مجاز
  let x = 6;   // نا معقول
}

ایک مرتبہ کے اثر زون یا اسی بلک میں، ذیلی طور پر لیٹ ایک لیٹ متغیر نہیں اجازت دیا جاتا:

مثال

لیٹ ایکس = 10;       // اجازت
let x = 6;       // نا معقول
{
  لیٹ ایکس = 10;   // اجازت
  let x = 6;   // نا معقول
}

ایک مرتبہ کے اثر زون یا اسی بلک میں، ذیلی طور پر ور جی ایک لیٹ متغیر نہیں اجازت دیا جاتا:

مثال

لیٹ ایکس = 10;       // اجازت
ور ایکس = 6;       // نہیں اجازت
{
  لیٹ ایکس = 10;   // اجازت
  ور ایکس = 6;   // نہیں اجازت
}

مختلف اثر زون یا بلک میں لیٹ متغیر دوبارہ تعریف کرنا اجازت دیا جاتا ہے:

مثال

لیٹ ایکس = 6;       // اجازت
{
  لیٹ ایکس = 7;   // اجازت
}
{
  لیٹ ایکس = 8;   // اجازت
}

عیناً کوشش کریں

بلائسنگ

ذیلی طور پر ور جی معلوم کئے گئے متغیربلائسنگبالایا اٹھتا ہے، اگر آپ کو کیا نہیں پتا کہ بلائسنگ کیا ہے تو اپنے بلائسنگ کا چپتر پڑھیں

آپ متغیر کو اپنے تعریف سے پہلے استعمال کرسکتے ہیں:

مثال

// یہاں، آپ کارنیم کو استعمال کرسکتے ہیں
ور جی;

عیناً کوشش کریں

ذیلی طور پر لیٹ تعریف کئے گئے متغیر بلک میں اعلیٰ نہیں اٹھتا

درج کیا لیٹ متغیر کا پہلے استعمال کرسکتے ہیں تو ریفِرنس ایرور کا پیش آمد

متغیر بلک میں اپنے بلاک کی شروعات سے تک تاحال تعلیمات کا مرجع

مثال

// یہاں، آپ کارنیم کو استعمال نہیں کرسکتے
لیٹ کارنیم;