JavaScript:کلمه کلیدی Let در جاوااسکریپت

از ویکی کد
(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)
پرش به ناوبری پرش به جستجو

https://www.w3schools.com/js/js_let.asp

JavaScript Let

کلمه کلیدی let در جاوااسکریپت

ECMAScript 2015

ES2015 introduced two important new JavaScript keywords: let and const.

ورژن ES2015  جاوااسکریپت ، شامل دو کلمه کلیدی جدید بود : let و const .

These two keywords provide Block Scope variables (and constants) in JavaScript.

این دو کلمه کلیدی Scope یا ناحیه بلاک کد متغیرها (و ثابتها ) را در جاوااسکریپت مشخص می کنند.

Before ES2015, JavaScript had only two types of scope: Global Scope and Function Scope.

قبل از ورژن ES2015 ، جاوااسکریپت تنها دو نوع ناحیه یا Scope برای بلاک های کد خود داشت : Scope یا ناحیه ی کد کلی یا Global و scope یا ناحیه کد تابع یا Function scope .

Global Scope

ناحیه کد کلی یا global scope

Variables declared Globally (outside any function) have Global Scope.

متغیرهایی که به صورت کلی (بیرون از هر گونه تابعی) تعریف می شوند درون ناحیه کد یا Scope کلی یا Global قرار می گیرند.

مثال

var carName = "Volvo";


// code here can use carName


function myFunction() {

  // code here can also use carName

}

Global variables can be accessed from anywhere in a JavaScript program.

متغیرهای کلی یا Global را می توان از هر جایی در یک برنامه جاوااسکریپت ، دسترسی داشت .

Function Scope

ناحیه کد تابع یا Function scope

Variables declared Locally (inside a function) have Function Scope.

متغیرهایی که به صورت محلی یا local (درون یک تابع) تعریف می شوند دارای ناحیه کد تابع یا Function scope هستند .

مثال

// code here can NOT use carName


function myFunction() {

 var carName = "Volvo";

  // code here CAN use carName

}


// code here can NOT use carName

Local variables can only be accessed from inside the function where they are declared.

متغیر های محلی یا local تنها درون تابعی که تعریف شده اند قابل دسترسی اند .

JavaScript Block Scope

ناحیه بلاک کد یا block scope در جاوااسکریپت

Variables declared with the var keyword can not have Block Scope.

متغیرهایی که به وسیله ی کلمه ی var تعریف می شوند دارای ناحیه بلاک کد یا block scope نیستند .

Variables declared inside a block {} can be accessed from outside the block.

متغیر هایی که درون یک بلاک {} قرار می گیرند از بیرون از بلاک کد قابل دسترسی هستند .

مثال

{

 var x = 2;

}

// x CAN be used here

Before ES2015 JavaScript did not have Block Scope.

قبل از ورژن ES2015  جاوااسکریپت ناحیه ی بلاک یا Block scope را نداشت .

Variables declared with the let keyword can have Block Scope.

متغیرهایی که با کلمه کلیدی let تعریف می شوند می توانند دارای ناحیه بلاک یا Block scope باشند.

Variables declared inside a block {} can not be accessed from outside the block:

متغیرهایی از این نوع که درون یک بلاک {} قرار می گیرند ، از بیرون بلاک قابل دسترسی نیستند :

مثال

{

 let x = 2;

}

// x can NOT be used here

Redeclaring Variables

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

Redeclaring a variable using the var keyword can impose problems.

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

Redeclaring a variable inside a block will also redeclare the variable outside the block:

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

مثال

var x = 10;

// Here x is 10

{

 var x = 2;

  // Here x is 2

}

// Here x is 2

Redeclaring a variable using the let keyword can solve this problem.

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

Redeclaring a variable inside a block will not redeclare the variable outside the block:

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

مثال

var x = 10;

// Here x is 10

{

 let x = 2;

 // Here x is 2

}

// Here x is 10

Browser Support

سازگاری با مروگرها

The let keyword is not fully supported in Internet Explorer 11 or earlier.

کلمه کلیدی let به طور کامل در مرورگر اینترنت اکسپلور ورژن یازده و یا قدیمی تر پشتیبانی نمی شود.

The following table defines the first browser versions with full support for the let keyword:

جدول زیر ، اولین ورژنهای مرورگرهایی که به طور کامل از کلمه کلیدی let پشتیبانی می کنند را لیست کرده است :

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

ناحیه کد حلقه یا loop scope :

Using var in a loop:

استفاده از کلمه var درون یک حلقه:

مثال

var i = 5;

for (var i = 0; i < 10; i++) {

 // some statements

}

// Here i is 10

Using let in a loop:

استفاده از کلمه let درون یک حلقه:

مثال

let i = 5;

for (let i = 0; i < 10; i++) {

  // some statements

}

// Here i is 5

In the first مثال, using var, the variable declared in the loop redeclares the variable outside the loop.

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

In the second مثال, using let, the variable declared in the loop does not redeclare the variable outside the loop.

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

When let is used to declare the i variable in a loop, the i variable will only be visible within the loop.

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

Function Scope

ناحیه کد تابع یا Function scope

Variables declared with var and let are quite similar when declared inside a function.

متغیرهایی که با کلمه های کلیدی var و let تعریف می شوند زمانی که درون یک تابع تعریف می شوند ، بسیار شبیه به هم هستند .

They will both have Function Scope:

هر دو آنها دارای ناحیه کد تابع یا function scope هستند :

function myFunction() {

  var carName = "Volvo";   // Function Scope

}

function myFunction() {

  let carName = "Volvo";   // Function Scope

}

Global Scope

ناحیه کد کلی و یا global scope

Variables declared with var and let are quite similar when declared outside a block.

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

They will both have Global Scope:

هر دو آنها دارای ناحیه کد کلی  یا Global Scope هستند :

var x = 2;      // Global scope

let x = 2;      // Global scope

Global Variables in HTML

متغیرهای با ناحیه کد کلی یا Global در html

With JavaScript, the global scope is the JavaScript environment.

با زبان جاوااسکریپت ، ناحیه کد کلی یا Global scope همان محیط جاوااسکریپت است .

In HTML, the global scope is the window object.

در html ، ناحیه کد کلی یا Global scope شی پنجره یا Window است.

Global variables defined with the var keyword belong to the window object:

متغیرهای کلی یا Global با کلمه کلیدی var و مربوط به شی پنجره یا Window تعریف می شوند:

مثال

var carName = "Volvo";

// code here can use window.carName

Global variables defined with the let keyword do not belong to the window object:

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

مثال

let carName = "Volvo";

// code here can not use window.carName

Redeclaring

از دوباره تعریف کردن

Redeclaring a JavaScript variable with var is allowed anywhere in a program:

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

مثال

var x = 2;


// Now x is 2


var x = 3;


// Now x is 3

Redeclaring a var variable with let, in the same scope, or in the same block, is not allowed:

از دوباره تعریف کردن یک متغیر با کلمه کلیدی var با یک متغیر با کلمه کلیدی let در ناحیه کد مشترک یا Scope مشترک و یا درون بلاک مشترک مجاز نیست :

مثال

var x = 2;       // Allowed

let x = 3;       // Not allowed


{

 var x = 4;  // Allowed

  let x = 5   // Not allowed

}

Redeclaring a let variable with let, in the same scope, or in the same block, is not allowed:

از دوباره تعریف کردن یک متغیر با کلمه کلیدی let با یک متغیر دیگر با کلمه کلیدی let در ناحیه کد مشترک یا scope مشترک و یا درون بلاک مشترک نیز ، مجاز نیست :

مثال

let x = 2;       // Allowed

let x = 3;       // Not allowed


{

  let x = 4;  // Allowed

  let x = 5;   // Not allowed

}

Redeclaring a let variable with var, in the same scope, or in the same block, is not allowed:

از دوباره تعریف کردن یک متغیر با کلمه کلیدی let با یک متغیر دیگر با کلمه کلیدی var ،در ناحیه کد مشترک یا Scope ، و یا درون بلاک مشترک نیز مجاز نیست:

مثال

let x = 2;       // Allowed

var x = 3;       // Not allowed


{

 let x = 4;  // Allowed

  var x = 5;   // Not allowed

}

Redeclaring a variable with let, in another scope, or in another block, is allowed:

از دوباره تعریف کردن یک متغیر با کلمه کلیدی let در ناحیه کد دیگر و یا بلاک کد دیگر مجاز است :

مثال

let x = 2;       // Allowed


{

  let x = 3;  // Allowed

}


{

  let x = 4;   // Allowed

}

Hoisting

بالا بردن یا hositing

Variables defined with var are hoisted to the top (if you don't know what Hoisting is, read our Hoisting Chapter).

متغیرهایی که با کلمه var تعریف می شوند به بالای اسکریپت hosite و یا منتقل می شوند . ( اگر شما نمی دانید که hositing چیست ، فصل Hositing یا جابه جایی را بخوانید .)

You can use a variable before it is declared:

شما می توانید از یک متغیر قبل از تعریف شدنش ،استفاده کنید :

مثال

// you CAN use carName here

var carName;

Variables defined with let are not hoisted to the top.

متغیرهایی که با کلمه کلیدی let تعریف می شوند به بالای اسکریپت جا به جا یا hosite نمی شوند .

Using a let variable before it is declared will result in a ReferenceError.

استفاده از یک متغیر که با کلمه کلیدی let تعریف شده قبل از تعریف آن ، موجب پیغام خطای Refrence error و یاخطای مرجع خواهد شد .

The variable is in a "temporal dead zone" from the start of the block until it is declared:

متغیر درون موقعیت مرگ موقت از بالای بلاک قرار دارد تا زمانی که تعریف شود :

مثال

// you can NOT use carName here

let carName;