జావాస్క్రిప్ట్ లెట్

ECMAScript 2015

ES2015 లో రెండు ముఖ్యమైన జావాస్క్రిప్ట్ కీలకాలు ప్రవేశపెట్టబడ్డాయి:let మరియు const.

ఈ రెండు కీలకాలు జావాస్క్రిప్ట్ లో బ్లాక్ స్కోప్ (Block Scope) వారియబుల్స్ (మరియు కన్స్టంట్స్).

ES2015 ముందు జావాస్క్రిప్ట్ లో వారియబుల్స్ (మరియు కన్స్టంట్స్) రెండు రకాల యొక్క స్కోప్ కలిగి ఉంది:గ్లౌబల్ స్కోప్మరియుఫంక్షన్ స్కోప్.

గ్లౌబల్ స్కోప్

గ్లౌబల్ఫంక్షన్ బాహ్యంలో ప్రకటించబడిన వారియబుల్స్ కొనియిచ్చుతుంది.గ్లౌబల్ స్కోప్.

ఇన్స్టాన్స్

var carName = "porsche";
// ఈ కోడ్ లో carName ఉపయోగించవచ్చు
function myFunction() {
  // ఈ కోడ్ లో carName ఉపయోగించబడవచ్చు
}

స్వయంగా ప్రయత్నించండి

గ్లౌబల్వారియబుల్స్ జావాస్క్రిప్ట్ ప్రోగ్రామ్ యొక్క ఏ స్థానంలోనైనా పరిశీలించబడవచ్చు.

ఫంక్షన్ స్కోప్

స్థానికఫంక్షన్ లో ప్రకటించబడిన వారియబుల్స్ కొనియిచ్చుతుంది.ఫంక్షన్ స్కోప్.

ఇన్స్టాన్స్

// ఈ కోడ్ లో carName ఉపయోగించబడదు
function myFunction() {
  var carName = "porsche";
  // code here CAN use carName
}
// ఈ కోడ్ లో carName ఉపయోగించబడదు

స్వయంగా ప్రయత్నించండి

స్థానికవారియబుల్స్ వారి ప్రకటన ఫంక్షన్లోనే పరిశీలించబడతాయి.

జావాస్క్రిప్ట్ బ్లాక్ స్కోప్

ద్వారా var కీలక విభాగం ప్రకటించబడిన వారియబుల్స్ బ్లాక్ కాదుస్కోప్.

బ్లాక్ లో {} బ్లాక్ లో ప్రకటించబడిన వారియబుల్స్ బ్లాక్ పెరిఫెరీ నుండి పరిశీలించబడవచ్చు.

ఇన్స్టాన్స్

{ 
  var x = 10; 
}
// ఇక్కడ x ఉపయోగించవచ్చు

ES2015 ముందు జావాస్క్రిప్ట్ బ్లాక్ స్కోప్ కలిగి లేదు.

ఉపయోగించవచ్చు let కీలక విభాగం బ్లాక్ స్కోప్ వారియబుల్స్ కొనియిచ్చుతుంది.

బ్లాక్ లో {} బ్లాక్ లో ప్రకటించబడిన వారియబుల్స్ బ్లాక్ పెరిఫెరీ నుండి పరిశీలించబడదు:

ఇన్స్టాన్స్

{ 
  let x = 10;
}
// ఇక్కడ x ఉపయోగించబడదు

వారియబుల్స్ పునఃప్రకటన

ఉపయోగించండి var కీలక వారియబుల్స్ పునఃప్రకటన సమస్య తీసుకువస్తుంది.

బ్లాక్ లో మరలా వారియబుల్స్ పునఃప్రకటన బ్లాక్ పెరిఫెరీ వారియబుల్స్ పునఃప్రకటన చేస్తుంది:

ఇన్స్టాన్స్

var x = 10;
// ఇక్కడ x అనేది 10
{ 
  var x = 6;
  // ఇక్కడ x అనేది 6
}
// ఇక్కడ x అనేది 6

స్వయంగా ప్రయత్నించండి

ఉపయోగించండి let కీలక వారియబుల్స్ పునఃప్రకటన ఈ సమస్యను పరిష్కరించవచ్చు.

బ్లాక్ లో మరలా వారియబుల్స్ పునఃప్రకటన బ్లాక్ పెరిఫెరీ వారియబుల్స్ పునఃప్రకటన చేయదు:

ఇన్స్టాన్స్

var x = 10;
// ఇక్కడ x అనేది 10
{ 
  let x = 6;
  // ఇక్కడ x అనేది 6
}
// ఇక్కడ x అనేది 10

స్వయంగా ప్రయత్నించండి

బ్రౌజర్ మద్దతు

Internet Explorer 11 లేదా అది ముంది వెర్షన్లు పూర్తిగా మద్దతు ఇవ్వలేదు let కీలక విభాగం.

ఈ పట్టిక మొదటి పూర్తిగా మద్దతు ఇచ్చే let కీలక విభాగం బ్రౌజర్ వెర్షన్:

Chrome 49 IE / Edge 12 Firefox 44 Safari 11 Opera 36
2016 మార్చి 2015 జూలై 2015 జనవరి 2017 సెప్టెంబర్ 2016 మార్చి

లూప్ స్కోప్

లూప్ లో ఉపయోగించండి var:

ఇన్స్టాన్స్

var i = 7;
for (var i = 0; i < 10; i++) {
  // కొన్ని వాక్యాలు
}
// ఇక్కడ i సంఖ్య 10 గా ఉంది

స్వయంగా ప్రయత్నించండి

లూప్ లో ఉపయోగించండి let:

ఇన్స్టాన్స్

let i = 7;
for (let i = 0; i < 10; i++) {
  // కొన్ని వాక్యాలు
}
// ఇక్కడ i సంఖ్య 7 గా ఉంది

స్వయంగా ప్రయత్నించండి

మొదటి ఉదాహరణలో, లూప్ లో ఉపయోగించబడిన వేరియబుల్స్ ఉపయోగించబడినప్పుడు var లూప్ బాహ్యంలో వేరియబుల్స్ పునఃప్రకటించబడింది.

రెండవ ఉదాహరణలో, లూప్ లో ఉపయోగించబడిన వేరియబుల్స్ ఉపయోగించబడినప్పుడు let లూప్ బాహ్యంలో వేరియబుల్స్ పునఃప్రకటించబడలేదు.

లూప్ లో వేరియబుల్స్ ఉపయోగించినప్పుడు let వేరియబుల్ i ని ప్రకటించినప్పుడు, వేరియబుల్ i కేవలం లూప్ లో కనిపిస్తుంది.

ఫంక్షన్ స్కోప్

ఫంక్షన్ లో వ్యాఖ్యలు చేయడం వద్ద ఉపయోగించండి var మరియు let మరియు వాటికి చాలా వరుసగా ఉన్నది.

వాటిలో అన్నింటికీ ఉన్నదిఫంక్షన్ స్కోప్:

function myFunction() {
  var carName = "porsche";   // ఫంక్షన్ స్కోప్
}
function myFunction() {
  let carName = "porsche";   // ఫంక్షన్ స్కోప్
}

గ్లౌబల్ స్కోప్

బ్లాక్ బాహ్యంలో ప్రకటించినప్పుడు అప్పుడు var మరియు let మరియు వాటికి చాలా వరుసగా ఉన్నది.

వాటిలో అన్నింటికీ ఉన్నదిగ్లౌబల్ స్కోప్:

var x = 10;       // గ్లౌబల్ స్కోప్
let y = 6;       // గ్లౌబల్ స్కోప్

హ్ట్మ్ల్ లో గ్లౌబల్ వేరియబుల్స్

జావాస్క్రిప్ట్ ఉపయోగించినప్పుడు, గ్లౌబల్ స్కోప్ జావాస్క్రిప్ట్ ఎన్విరాన్మెంట్ ఉంది.

హ్ట్మ్ల్ లో, గ్లౌబల్ స్కోప్ విండో ఆబ్జెక్ట్ ఉంది.

ద్వారా var కీలకపదం నిర్వచించబడిన గ్లౌబల్ వేరియబుల్స్ విండో ఆబ్జెక్ట్ కు చెందుతాయి:

ఇన్స్టాన్స్

var carName = "porsche";
// ఈ కోడు విండో కార్నేమ్ ని ఉపయోగించవచ్చు

స్వయంగా ప్రయత్నించండి

ద్వారా let కీలకపదం నిర్వచించబడిన గ్లౌబల్ వేరియబుల్స్ విండో ఆబ్జెక్ట్ కు చెందకుండా ఉంటాయి:

ఇన్స్టాన్స్

let carName = "porsche";
// ఈ కోడు విండో కార్నేమ్ ని ఉపయోగించలేదు

స్వయంగా ప్రయత్నించండి

పునఃప్రకటించండి

ప్రోగ్రామ్ యొక్క ఏ స్థానంలోనైనా ఉపయోగించవచ్చు var జావాస్క్రిప్టు వ్యవస్థాపక వ్యాఖ్యలు పునఃప్రకటించండి:

ఇన్స్టాన్స్

var x = 10;
// ఇప్పుడు x సంఖ్య 10 గా ఉంది
var x = 6;
// ఇప్పుడు x సంఖ్య 6 గా ఉంది

స్వయంగా ప్రయత్నించండి

在相同的作用域,或在相同的块中,通过 let 重新声明一个 var 变量是不允许的:

ఇన్స్టాన్స్

var x = 10;       // అనుమతించబడింది
let x = 6;       // నిషేధించబడింది
{
  var x = 10;   // అనుమతించబడింది
  let x = 6;   // నిషేధించబడింది
}

在相同的作用域,或在相同的块中,通过 let 重新声明一个 let 变量是不允许的:

ఇన్స్టాన్స్

let x = 10;       // 允许
let x = 6;       // నిషేధించబడింది
{
  let x = 10;   // 允许
  let x = 6;   // నిషేధించబడింది
}

在相同的作用域,或在相同的块中,通过 var 重新声明一个 let 变量是不允许的:

ఇన్స్టాన్స్

let x = 10;       // 允许
var x = 6;       // 不允许
{
  let x = 10;   // 允许
  var x = 6;   // 不允许
}

在不同的作用域或块中,通过 let 重新声明变量是允许的:

ఇన్స్టాన్స్

let x = 6;       // 允许
{
  let x = 7;   // 允许
}
{
  let x = 8;   // 允许
}

స్వయంగా ప్రయత్నించండి

提升

ద్వారా var 声明的变量会提升到顶端。如果您不了解什么是提升(Hoisting),请学习我们的提升这一章。

వేరియబుల్స్ ప్రకటించడానికి ముందు ఉపయోగించవచ్చు:

ఇన్స్టాన్స్

// ఇక్కడ, మీరు carName ను ఉపయోగించవచ్చు
var carName;

స్వయంగా ప్రయత్నించండి

ద్వారా let ప్రకటించబడిన వేరియబుల్స్ టాప్ నిలకడగా పెరిగిపోలేదు.

లో ప్రకటించబడింది let వేరియబుల్స్ ముందు ఉపయోగించడం ద్వారా ReferenceError ఉంటుంది.

వేరియబుల్స్ బ్లాక్ ప్రారంభం నుండి 'తాత్కాలిక మరణం' వరకు ఉన్నాయి:

ఇన్స్టాన్స్

// ఇక్కడ, మీరు carName ను ఉపయోగించలేరు
let carName;